{"id":1340,"name":"sqlalchemy","ecosystem":"pip","repository_url":"https://github.com/sqlalchemy/sqlalchemy","issues_count":3295,"created_at":"2025-06-06T15:01:43.307Z","updated_at":"2025-06-06T15:01:43.307Z","purl":"pkg:pypi/sqlalchemy","metadata":{"id":425128,"name":"sqlalchemy","ecosystem":"pypi","description":"Database Abstraction Library","homepage":"https://www.sqlalchemy.org","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/sqlalchemy/sqlalchemy","keywords_array":[],"namespace":null,"versions_count":312,"first_release_published_at":"2006-02-14T03:11:34.000Z","latest_release_published_at":"2025-05-14T17:10:32.000Z","latest_release_number":"2.0.41","last_synced_at":"2025-05-14T17:16:18.406Z","created_at":"2022-04-06T18:26:52.593Z","updated_at":"2025-05-14T17:16:18.777Z","registry_url":"https://pypi.org/project/sqlalchemy/","install_command":"pip install sqlalchemy --index-url https://pypi.org/simple","documentation_url":"https://docs.sqlalchemy.org","metadata":{"funding":null,"documentation":"https://docs.sqlalchemy.org","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Database :: Front-Ends"],"normalized_name":"sqlalchemy"},"repo_metadata":{"id":37276094,"uuid":"159271175","full_name":"sqlalchemy/sqlalchemy","owner":"sqlalchemy","description":"The Database Toolkit for Python","archived":false,"fork":false,"pushed_at":"2024-09-05T15:55:29.000Z","size":89981,"stargazers_count":9380,"open_issues_count":241,"forks_count":1406,"subscribers_count":101,"default_branch":"main","last_synced_at":"2024-09-07T02:25:22.246Z","etag":null,"topics":["python","sql","sqlalchemy"],"latest_commit_sha":null,"homepage":"https://www.sqlalchemy.org","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/sqlalchemy.png","metadata":{"files":{"readme":"README.dialects.rst","changelog":"CHANGES.rst","contributing":".github/CONTRIBUTING.md","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"sqlalchemy","patreon":"zzzeek","tidelift":"pypi/SQLAlchemy"}},"created_at":"2018-11-27T03:35:03.000Z","updated_at":"2024-09-06T13:19:52.000Z","dependencies_parsed_at":"2023-10-14T20:55:09.029Z","dependency_job_id":"72769685-e5df-4820-80f2-dbfda74e23e2","html_url":"https://github.com/sqlalchemy/sqlalchemy","commit_stats":{"total_commits":14571,"total_committers":732,"mean_commits":19.90573770491803,"dds":"0.22393795895957724","last_synced_commit":"c0bb145305a3b29afcc476cf2832e6402703350b"},"previous_names":[],"tags_count":312,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sqlalchemy","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217917324,"owners_count":16250588,"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":"sqlalchemy","name":"SQLAlchemy","uuid":"6043126","kind":"organization","description":"The Database Toolkit and Object Relational Mapper","email":null,"website":"https://www.sqlalchemy.org","location":null,"twitter":"sqlalchemy","company":null,"icon_url":"https://avatars.githubusercontent.com/u/6043126?v=4","repositories_count":9,"last_synced_at":"2024-05-01T09:30:40.494Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/sqlalchemy","funding_links":["https://github.com/sponsors/sqlalchemy"],"total_stars":11995,"followers":362,"following":0,"created_at":"2022-11-02T16:28:36.065Z","updated_at":"2024-05-01T09:30:42.310Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sqlalchemy","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sqlalchemy/repositories"},"tags":[{"name":"rel_2_0_32","sha":"3a254c31a755a8c052fd0f0ce0ae88baa7b8ba1b","kind":"commit","published_at":"2024-08-05T19:05:16.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_32","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_32","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_32","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_32/manifests"},{"name":"rel_1_4_53","sha":"257a65d755a0dac4513bb6a35d279b05ceb7e079","kind":"commit","published_at":"2024-07-29T16:18:22.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_53","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_53","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_53","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_53/manifests"},{"name":"rel_2_0_31","sha":"2ef2c65db914c42cda6a79cc21b6acbe7550c7d8","kind":"commit","published_at":"2024-06-18T19:04:17.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_31","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_31","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_31","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_31/manifests"},{"name":"rel_2_0_30","sha":"403194a3979a55a5387311595210ce05c877e355","kind":"commit","published_at":"2024-05-05T17:52:32.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_30","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_30","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_30","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_30/manifests"},{"name":"rel_2_0_29","sha":"b304ef2808ba30ce9f7f250830a670be7f3058f5","kind":"commit","published_at":"2024-03-23T21:46:25.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_29","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_29","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_29","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_29/manifests"},{"name":"rel_2_0_28","sha":"2a71f3b1f955e5e78b19b91e41ecd60aa257883e","kind":"commit","published_at":"2024-03-04T13:32:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_28","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_28","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_28","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_28/manifests"},{"name":"rel_1_4_52","sha":"768507602e4564108799c0c6bfd3d7ceb734784b","kind":"commit","published_at":"2024-03-04T13:24:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_52","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_52","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_52","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_52/manifests"},{"name":"rel_2_0_27","sha":"43f0d8408240d6c893131a6fd6a81be29149ad05","kind":"commit","published_at":"2024-02-13T15:02:14.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_27","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_27","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_27","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_27/manifests"},{"name":"rel_2_0_26","sha":"77e606ee5d102869658bd454d3320d5b406ee01d","kind":"commit","published_at":"2024-02-11T15:11:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_26","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_26","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_26","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_26/manifests"},{"name":"rel_2_0_25","sha":"b836ca0a3a213dc387e08df3ba340e6ec3298985","kind":"commit","published_at":"2024-01-03T01:40:54.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_25","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_25","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_25","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_25/manifests"},{"name":"rel_1_4_51","sha":"2ed9b687a4da84bee0191e733a47e39f0a8f91f9","kind":"commit","published_at":"2024-01-03T01:08:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_51","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_51","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_51","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_51/manifests"},{"name":"rel_2_0_24","sha":"aab08b711a98ebd3e731ca9c304bbf7e047e0e9a","kind":"commit","published_at":"2023-12-28T16:19:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_24","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_24","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_24","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_24/manifests"},{"name":"rel_2_0_23","sha":"cc9edddba969f1bf4cdc8db932c80e1f15171b62","kind":"commit","published_at":"2023-11-02T14:31:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_23","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_23","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_23","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_23/manifests"},{"name":"rel_1_4_50","sha":"6cd45888c0f7299125a137d9108c6eff4096561e","kind":"commit","published_at":"2023-10-29T20:21:48.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_50","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_50","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_50","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_50/manifests"},{"name":"rel_2_0_22","sha":"cae90bc2d7366b6d4e2b7206c2d391992ddced31","kind":"commit","published_at":"2023-10-12T20:38:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_22","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_22/manifests"},{"name":"rel_2_0_21","sha":"35672ddf0dcd3ac7aab2305901040d30002e1793","kind":"commit","published_at":"2023-09-18T21:02:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_21","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_21/manifests"},{"name":"rel_2_0_20","sha":"a52103c44f3989d53edf4c76abb92afd3ca724c9","kind":"commit","published_at":"2023-08-15T18:34:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_20","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_20/manifests"},{"name":"rel_2_0_19","sha":"9e89d2cbbf7ccef05579472b94c90124a1ecf9e3","kind":"commit","published_at":"2023-07-15T12:55:40.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_19","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_19/manifests"},{"name":"rel_2_0_18","sha":"e3b9d4c19ec0a77556c630660eb3809dc3cc775d","kind":"commit","published_at":"2023-07-05T18:47:58.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_18","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_18/manifests"},{"name":"rel_1_4_49","sha":"a7438bba206f5ffa2a14cd9398354ba78fed7b6e","kind":"commit","published_at":"2023-07-05T17:45:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_49","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_49","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_49","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_49/manifests"},{"name":"rel_2_0_17","sha":"7690fd97248a3052eac2b2ddddfd095506402f7c","kind":"commit","published_at":"2023-06-23T14:47:57.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_17","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_17/manifests"},{"name":"rel_2_0_16","sha":"ffab94fc5f31c7a4a83d6e22a6be6ff43db0cabf","kind":"commit","published_at":"2023-06-10T19:42:45.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_16","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_16/manifests"},{"name":"rel_2_0_15","sha":"b722c8ab24e2379cd19acc6bff0c73e14deaf644","kind":"commit","published_at":"2023-05-20T00:16:18.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_15","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_15/manifests"},{"name":"rel_2_0_14","sha":"caefe402d02374f81e92639217be880deda03b58","kind":"commit","published_at":"2023-05-18T18:06:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_14","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_14/manifests"},{"name":"rel_2_0_13","sha":"e0bf5ba169975d879c22bc61b1aaf4261ac0559f","kind":"commit","published_at":"2023-05-10T22:23:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_13","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_13/manifests"},{"name":"rel_2_0_12","sha":"5721f262db61edd06b392c063dc6aedadb61f6f4","kind":"commit","published_at":"2023-04-30T21:34:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_12","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_12/manifests"},{"name":"rel_1_4_48","sha":"b71d50730367493c17473019c7c4c791c9be84d5","kind":"commit","published_at":"2023-04-30T21:24:32.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_48","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_48","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_48","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_48/manifests"},{"name":"rel_2_0_11","sha":"a0b36e15d5ba390fb651ee1b83b0a143586d9244","kind":"commit","published_at":"2023-04-27T01:43:30.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_11/manifests"},{"name":"rel_2_0_10","sha":"3b2c98fad718cc3e2e2d2bd7fb57f98859d5e7bc","kind":"commit","published_at":"2023-04-21T19:45:19.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_10/manifests"},{"name":"rel_2_0_9","sha":"0d9221362e5a3e50de7e21e674da3701f4bcd646","kind":"commit","published_at":"2023-04-05T23:28:29.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_9/manifests"},{"name":"rel_2_0_8","sha":"c8729c5d62b2de5013a01fe3060980c9dcd7c9ca","kind":"commit","published_at":"2023-03-31T18:04:38.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_8/manifests"},{"name":"rel_1_4_47","sha":"cdad8ab375ab5d04c52f7be7ce1c85f588d8355e","kind":"commit","published_at":"2023-03-18T17:04:58.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_47","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_47","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_47","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_47/manifests"},{"name":"rel_2_0_7","sha":"f1b12c8e43f6669d83c1d226f8207b08039f2900","kind":"commit","published_at":"2023-03-18T16:56:40.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_7/manifests"},{"name":"rel_2_0_6","sha":"8154afca626a4849d67f10098f72ca3922e00ab8","kind":"commit","published_at":"2023-03-13T16:44:14.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_6/manifests"},{"name":"rel_2_0_5_post1","sha":"67ce99402a848c3553e53e51c79db8e765fb4295","kind":"commit","published_at":"2023-03-06T03:32:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_5_post1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_5_post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_5_post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_5_post1/manifests"},{"name":"rel_2_0_5","sha":"85334e7f89c93b57c54db57ef76c60916966c574","kind":"commit","published_at":"2023-03-06T00:55:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_5/manifests"},{"name":"rel_2_0_4","sha":"15597c7557de50b8a3c75230fb89b98986001ea0","kind":"commit","published_at":"2023-02-17T15:47:40.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_4/manifests"},{"name":"rel_2_0_3","sha":"00a9b83fd83a2da367a8b81d8e12ae3de664d50a","kind":"commit","published_at":"2023-02-09T23:01:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_3/manifests"},{"name":"rel_2_0_2","sha":"f3e788e034ef6a76868319a4fb48cbf5e0bc9e60","kind":"commit","published_at":"2023-02-06T23:55:27.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_2/manifests"},{"name":"rel_2_0_1","sha":"2b5aacf114dbab663ef228aeee732dde9425de47","kind":"commit","published_at":"2023-02-01T17:11:59.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_1/manifests"},{"name":"rel_2_0_0","sha":"ad2a65ef7e3cd57912c6c0373c8b843b8a1730eb","kind":"commit","published_at":"2023-01-26T22:52:28.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0/manifests"},{"name":"rel_2_0_0rc3","sha":"5c1308646db2321462a56b6d06e0353c230874dc","kind":"commit","published_at":"2023-01-19T00:21:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0rc3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0rc3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0rc3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0rc3/manifests"},{"name":"rel_2_0_0rc2","sha":"e968297c82efa75f822d5628acacb4d5655e657c","kind":"commit","published_at":"2023-01-09T20:22:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0rc2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0rc2/manifests"},{"name":"rel_1_4_46","sha":"b3bb55aaea9ee94e50f8db594d65c2bfcdb314ef","kind":"commit","published_at":"2023-01-03T20:02:32.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_46","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_46","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_46","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_46/manifests"},{"name":"rel_2_0_0rc1","sha":"aface61c35930b9d7cc3927009e01d48f0fc49fc","kind":"commit","published_at":"2022-12-28T20:55:29.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0rc1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0rc1/manifests"},{"name":"rel_1_4_45","sha":"b924ba949cb8aa1bd73f7438600caf92a3b732b3","kind":"commit","published_at":"2022-12-10T18:47:24.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_45","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_45","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_45","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_45/manifests"},{"name":"rel_2_0_0b4","sha":"a11d8754d93f59332646e3e6258e2c560b47d7f8","kind":"commit","published_at":"2022-12-05T23:14:49.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0b4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0b4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b4/manifests"},{"name":"rel_1_4_44","sha":"6e338f168d4ca38278290dcf7f2c72f498c608fb","kind":"commit","published_at":"2022-11-12T13:59:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_44","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_44","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_44","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_44/manifests"},{"name":"rel_2_0_0b3","sha":"35648a109427308f67f23d87b2246c388fc5a2e1","kind":"commit","published_at":"2022-11-04T21:09:03.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0b3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b3/manifests"},{"name":"rel_1_4_43","sha":"274ecb746d559aa9b9e9c788544e8856807ab192","kind":"commit","published_at":"2022-11-04T21:04:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_43","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_43","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_43","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_43/manifests"},{"name":"rel_2_0_0b2","sha":"d6c0dfa2d8bb7341f6dc6494d5c20429c4f1c173","kind":"commit","published_at":"2022-10-20T17:40:54.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b2/manifests"},{"name":"rel_1_4_42","sha":"8aa07c8e62a0483e0c882ffbf97453d5e4614efe","kind":"commit","published_at":"2022-10-16T14:12:34.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_42","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_42","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_42","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_42/manifests"},{"name":"rel_2_0_0b1","sha":"08f6b002515925d0494c15011d6e7754c039f8bc","kind":"commit","published_at":"2022-10-13T15:25:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_2_0_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_2_0_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_2_0_0b1/manifests"},{"name":"rel_1_4_41","sha":"ac9a74ac0d60f5e95d9dbbce7f804f532bef2bea","kind":"commit","published_at":"2022-09-07T00:53:28.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_41","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_41","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_41","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_41/manifests"},{"name":"rel_1_4_40","sha":"f297ed07379e13cb4f130d83c0fcbf2410d663ff","kind":"commit","published_at":"2022-08-08T16:10:25.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_40","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_40","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_40","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_40/manifests"},{"name":"rel_1_4_39","sha":"f35a025bd1a9b649e5dedc86c8b5f3b12ffb8c9b","kind":"commit","published_at":"2022-06-24T16:15:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_39","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_39","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_39","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_39/manifests"},{"name":"rel_1_4_38","sha":"704b7d4c2e46c38fd29b6248597cf3e4ec3f6832","kind":"commit","published_at":"2022-06-23T16:22:46.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_38","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_38","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_38","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_38/manifests"},{"name":"rel_1_4_37","sha":"e347aa81a593252b6ee4f84a411f62f526ba0c77","kind":"commit","published_at":"2022-05-31T21:23:09.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_37","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_37","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_37","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_37/manifests"},{"name":"rel_1_4_36","sha":"9bb5d8fed9b87bdbbbd7b3e34aa1f5b06faff29e","kind":"commit","published_at":"2022-04-26T20:56:04.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_36","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_36","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_36","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_36/manifests"},{"name":"rel_1_4_35","sha":"615c5809b97f8122a5a6e407801bbe222912827d","kind":"commit","published_at":"2022-04-06T15:23:05.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_35","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_35","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_35","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_35/manifests"},{"name":"rel_1_4_34","sha":"faa23f1729ec86ee1e0d7ba4d0fd30fb331f867b","kind":"commit","published_at":"2022-03-31T22:10:43.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_34","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_34","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_34","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_34/manifests"},{"name":"rel_1_4_33","sha":"9ed013bbc391fa3a7fcb82a62371c90d3d464158","kind":"commit","published_at":"2022-03-31T14:07:16.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_33","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_33","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_33","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_33/manifests"},{"name":"rel_1_4_32","sha":"293cb14e2198c11e9c8b71454f35c0ff92dc25ab","kind":"commit","published_at":"2022-03-06T22:28:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_32","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_32","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_32","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_32/manifests"},{"name":"rel_1_4_31","sha":"ab42b0e3d98386c8a13edea3206ef43f018de3b6","kind":"commit","published_at":"2022-01-21T01:33:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_31","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_31","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_31","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_31/manifests"},{"name":"rel_1_4_30","sha":"38bbd4686180d01c8fa0538f2f72b01e81380166","kind":"commit","published_at":"2022-01-19T23:11:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_30","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_30","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_30","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_30/manifests"},{"name":"rel_1_4_29","sha":"ce51ca62587067385280b92a255b9a41a7b2380e","kind":"commit","published_at":"2021-12-23T02:08:12.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_29","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_29","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_29","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_29/manifests"},{"name":"rel_1_4_28","sha":"e6872c5c46718aef49d64963b4fe0db773056963","kind":"commit","published_at":"2021-12-09T19:35:43.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_28","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_28","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_28","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_28/manifests"},{"name":"rel_1_4_27","sha":"36420103f8dddae0c23a945eed5daf8bf1952f61","kind":"commit","published_at":"2021-11-11T15:42:08.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_27","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_27","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_27","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_27/manifests"},{"name":"rel_1_4_26","sha":"9189e3b18c36c39a717d6bf0c697c46ad9761a7a","kind":"commit","published_at":"2021-10-19T21:03:34.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_26","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_26","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_26","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_26/manifests"},{"name":"rel_1_4_25","sha":"3b4b0a3946b2e6ccd3fd51b389be09e8f0f81e07","kind":"commit","published_at":"2021-09-23T01:51:25.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_25","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_25","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_25","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_25/manifests"},{"name":"rel_1_4_24","sha":"288280829a8391985674e23ed1981d904268780c","kind":"commit","published_at":"2021-09-22T15:18:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_24","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_24","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_24","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_24/manifests"},{"name":"rel_1_4_23","sha":"dbca3582f9aa105f9c0ddf4eba5b4130f297ad7d","kind":"commit","published_at":"2021-08-18T17:05:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_23","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_23","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_23","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_23/manifests"},{"name":"rel_1_4_22","sha":"044d951ea46cfa405ad9cae4319d6d44afda527a","kind":"commit","published_at":"2021-07-21T22:53:27.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_22","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_22/manifests"},{"name":"rel_1_4_21","sha":"7ed27d8245d6b4cf98e67fe80ae3903680aa1453","kind":"commit","published_at":"2021-07-14T20:50:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_21","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_21/manifests"},{"name":"rel_1_4_20","sha":"e3ce7ee2ee5b647416654763bd0c8c781b88d79f","kind":"commit","published_at":"2021-06-28T20:29:28.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_20","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_20/manifests"},{"name":"rel_1_4_19","sha":"acbc5e824130ae2944defde655a2c437a711ce6b","kind":"commit","published_at":"2021-06-23T01:22:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_19","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_19/manifests"},{"name":"rel_1_4_18","sha":"4808acfe1b88854fce47b792ef9995f1921426e7","kind":"commit","published_at":"2021-06-10T18:13:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_18","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_18/manifests"},{"name":"rel_1_4_17","sha":"b79c375b642684775d501fb7dc0efb2b5f4f3415","kind":"commit","published_at":"2021-05-29T20:14:52.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_17","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_17/manifests"},{"name":"rel_1_4_16","sha":"627135e4239c5f1a073b7c21e4958087c4b0e0a0","kind":"commit","published_at":"2021-05-28T17:05:23.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_16","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_16/manifests"},{"name":"rel_1_4_15","sha":"8a9a2e384db2d4b9fedf8d3b62dbf8937b7ba2b8","kind":"commit","published_at":"2021-05-11T04:26:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_15","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_15/manifests"},{"name":"rel_1_4_14","sha":"96d8a4acbbecfa699ad28a8441402ea166bc95c6","kind":"commit","published_at":"2021-05-06T21:15:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_14","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_14/manifests"},{"name":"rel_1_4_13","sha":"05fa02d1c1672d5481ced0980980a332688f67b3","kind":"commit","published_at":"2021-05-03T19:25:21.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_13","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_13/manifests"},{"name":"rel_1_4_12","sha":"2f30491a1631b8c0b14d03bb13d0bb8abda35487","kind":"commit","published_at":"2021-04-29T21:46:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_12","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_12/manifests"},{"name":"rel_1_4_11","sha":"507a828de6f8b5f878093d86332f1954bd154ca3","kind":"commit","published_at":"2021-04-22T03:10:02.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_11/manifests"},{"name":"rel_1_4_10","sha":"0dafacd7ebfcf91cf4839c8d84cc8d495afaabe1","kind":"commit","published_at":"2021-04-21T01:36:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_10/manifests"},{"name":"rel_1_4_9","sha":"c46b653893bb7ca68aa1909c75d871766dfda2ae","kind":"commit","published_at":"2021-04-17T05:19:32.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_9/manifests"},{"name":"rel_1_4_8","sha":"9f5ca21791fb6765f4b9a5a0acfe660b1ee55cf4","kind":"commit","published_at":"2021-04-15T14:19:32.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_8/manifests"},{"name":"rel_1_4_7","sha":"ee40b4bd2acb68b00e75cda1bc40f9c47965be34","kind":"commit","published_at":"2021-04-09T17:07:59.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_7/manifests"},{"name":"rel_1_4_6","sha":"2a74994fc7d82753e565780386dfeb8a4909813a","kind":"commit","published_at":"2021-04-06T22:59:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_6/manifests"},{"name":"rel_1_4_5","sha":"fd669c5618605ffd6c9e70d221113520670af39b","kind":"commit","published_at":"2021-04-02T16:00:02.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_5/manifests"},{"name":"rel_1_4_4","sha":"48e61f6067022fdf04521f8493c6b2ceba7fcc74","kind":"commit","published_at":"2021-03-31T00:14:28.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_4/manifests"},{"name":"rel_1_3_24","sha":"ee17cbad9ed4adbc1a6a1b6273ad1ded66e25d99","kind":"commit","published_at":"2021-03-30T22:58:27.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_24","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_24","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_24","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_24/manifests"},{"name":"rel_1_4_3","sha":"cc026215c639721e23ba9cca8dcebca8cdabf225","kind":"commit","published_at":"2021-03-25T21:32:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_3/manifests"},{"name":"rel_1_4_2","sha":"7d6700d96dd1fd24a8d459477fbc6f14f3b637a3","kind":"commit","published_at":"2021-03-19T22:59:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_2/manifests"},{"name":"rel_1_4_1","sha":"f6da955b6602563811f46f77fa436e4b8432b20d","kind":"commit","published_at":"2021-03-17T18:52:41.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_1/manifests"},{"name":"rel_1_4_0","sha":"e769ba4b00859ac8c95610ed149da4d940eac9d0","kind":"commit","published_at":"2021-03-15T15:58:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0/manifests"},{"name":"rel_1_4_0b3","sha":"a5e10cbd5339d42c49a3d37bb92471800d1ef252","kind":"commit","published_at":"2021-02-15T19:49:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_0b3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_0b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0b3/manifests"},{"name":"rel_1_4_0b2","sha":"1f9738acf30a279f52b7d0b447a379ab84beefd6","kind":"commit","published_at":"2021-02-03T23:15:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0b2/manifests"},{"name":"rel_1_3_23","sha":"4d7a872823220b9ec906fadea986a30c26db7887","kind":"commit","published_at":"2021-02-01T20:52:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_23","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_23","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_23","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_23/manifests"},{"name":"rel_1_3_22","sha":"158967e5ef2f135fe92f53896e73b1116d7905de","kind":"commit","published_at":"2020-12-18T21:05:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_22","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_22/manifests"},{"name":"rel_1_3_21","sha":"5571401acb3f84c04642b7143aef71153c7ba422","kind":"commit","published_at":"2020-12-17T17:27:41.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_21","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_21/manifests"},{"name":"rel_1_4_0b1","sha":"dba0c8133e6b58499bb1e57dc66862d77e1aae89","kind":"commit","published_at":"2020-11-02T20:59:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_4_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_4_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_4_0b1/manifests"},{"name":"rel_1_3_20","sha":"6eda3aa8c5f58e415a49ac8dc73eb8608f4be306","kind":"commit","published_at":"2020-10-12T22:30:08.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_20","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_20/manifests"},{"name":"rel_1_3_19","sha":"da4e4cb1c67230abd67e487cfb1bda8cd6910029","kind":"commit","published_at":"2020-08-17T19:59:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_19","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_19/manifests"},{"name":"rel_1_3_18","sha":"be2f4fbf0ee270f504d65c56754608c4d0874125","kind":"commit","published_at":"2020-06-25T18:33:21.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_18","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_18/manifests"},{"name":"rel_1_3_17","sha":"1084153cac3847401c2454dbebc3e2cc85b462aa","kind":"commit","published_at":"2020-05-13T21:35:25.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_17","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_17/manifests"},{"name":"rel_1_3_16","sha":"06ba82a9c74885d1c5d8da7d138a869d83167cae","kind":"commit","published_at":"2020-04-08T02:41:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_16","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_16/manifests"},{"name":"rel_1_3_15","sha":"b2a20b1f5f02d73e60f5d785d1b8ce6c9831b623","kind":"commit","published_at":"2020-03-11T16:29:27.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_15","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_15/manifests"},{"name":"rel_1_3_14","sha":"cf3b2a16400b3f915ee606bf0d9c21c65d566d53","kind":"commit","published_at":"2020-03-10T15:40:08.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_14","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_14/manifests"},{"name":"rel_1_3_13","sha":"98abb4cd0729651e2bcf0aa7ceecb0b02b1902ae","kind":"commit","published_at":"2020-01-22T16:50:02.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_13","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_13/manifests"},{"name":"rel_1_3_12","sha":"b1febcb28d796b061e3cccf570c4c36052ed33a8","kind":"commit","published_at":"2019-12-16T18:32:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_12","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_12/manifests"},{"name":"rel_1_3_11","sha":"283a08f86771ecd9d6202389e8883163ef994a3b","kind":"commit","published_at":"2019-11-11T22:07:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_11/manifests"},{"name":"rel_1_3_10","sha":"57e2433dcd8fc2d030d43b72009079ae175c5480","kind":"commit","published_at":"2019-10-09T22:31:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_10/manifests"},{"name":"rel_1_3_9","sha":"5caabe656d761b66858b7230fd9add8f7e5872e9","kind":"commit","published_at":"2019-10-04T20:07:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_9/manifests"},{"name":"rel_1_3_8","sha":"0f89cdc49b654561f50a6b6a27db7a120edb00eb","kind":"commit","published_at":"2019-08-27T23:18:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_8/manifests"},{"name":"rel_1_3_7","sha":"234fd22e14a5344cb5e1d0b32251fa68c09fa378","kind":"commit","published_at":"2019-08-14T17:35:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_7/manifests"},{"name":"rel_1_3_6","sha":"8f3ffc4a238be1336525449fd186b9530b5d3ec1","kind":"commit","published_at":"2019-07-21T20:37:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_6/manifests"},{"name":"rel_1_3_5","sha":"14bf5d73a2ed3b2b7a76f1b3cec9acf135c88725","kind":"commit","published_at":"2019-06-17T17:25:51.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_5/manifests"},{"name":"rel_1_3_4","sha":"7b9dbe91a81b918eb964433d96424bf66ffb0111","kind":"commit","published_at":"2019-05-28T01:54:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_4/manifests"},{"name":"rel_1_2_19","sha":"f178bac2fdfa819c27d6b163e51582f6e75f0029","kind":"commit","published_at":"2019-04-15T16:08:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_19","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_19/manifests"},{"name":"rel_1_3_3","sha":"47a2ab9e35e6e3b8963342809b75ca48d99ae667","kind":"commit","published_at":"2019-04-15T15:46:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_3/manifests"},{"name":"rel_1_3_2","sha":"8442a6e2b3cea69ac971b5382b6fc8463c591bf5","kind":"commit","published_at":"2019-04-02T17:11:51.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_2/manifests"},{"name":"rel_1_3_1","sha":"f7d2556cd35735182822760d22338e1c6b35ef31","kind":"commit","published_at":"2019-03-09T19:32:32.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_1/manifests"},{"name":"rel_1_3_0","sha":"740bb50c227d5a918e21329a3818081097fdb51a","kind":"commit","published_at":"2019-03-04T18:05:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0/manifests"},{"name":"rel_1_2_18","sha":"048098103c6d3c9d64fbe731bff1e9dee5d66b5e","kind":"commit","published_at":"2019-02-15T17:39:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_18","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_18/manifests"},{"name":"rel_1_3_0b3","sha":"38d34ca4dadb68d80422e80ce17fc95f7ded6006","kind":"commit","published_at":"2019-02-08T20:12:18.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_0b3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_0b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0b3/manifests"},{"name":"rel_1_3_0b2","sha":"f814da2f4c8fac2aeecad3466c45177861f961fe","kind":"commit","published_at":"2019-01-26T02:40:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0b2/manifests"},{"name":"rel_1_2_17","sha":"47c245b90cd3cfe76bc0cf078f740d12bf7ba2d1","kind":"commit","published_at":"2019-01-26T02:16:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_17","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_17/manifests"},{"name":"rel_1_2_16","sha":"921fa5b2bae8bce0a5e5e64621a1b0e733a2125b","kind":"commit","published_at":"2019-01-11T15:09:04.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_16","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_16/manifests"},{"name":"rel_1_2_15","sha":"4ea60fbd0f46f3f8656404c5f4726b5e28545983","kind":"commit","published_at":"2018-12-11T21:49:28.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_15","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_15/manifests"},{"name":"rel_1_3_0b1","sha":"19590812c02945b776a85a709dd6345e30c0dd71","kind":"commit","published_at":"2018-11-17T04:04:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_3_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_3_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_3_0b1/manifests"},{"name":"rel_1_2_14","sha":"bbf6873d736a3d0a6728406ec1ba25f731cbbd61","kind":"commit","published_at":"2018-11-10T20:50:34.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_14","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_14/manifests"},{"name":"rel_1_2_13","sha":"f6cc47f14aa1c55936b1cde61f5bcc9f5cfd8c2e","kind":"commit","published_at":"2018-10-31T20:34:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_13","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_13/manifests"},{"name":"rel_1_2_12","sha":"19661f810d173e363ddca01af0b41bccc8efc815","kind":"commit","published_at":"2018-09-19T18:00:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_12","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_12/manifests"},{"name":"rel_1_2_11","sha":"d5901aefa12992e42e26a31b6a33467ef26765e2","kind":"commit","published_at":"2018-08-20T20:54:50.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_11/manifests"},{"name":"rel_1_2_10","sha":"0d2d94c25bd07c60c83438cb4f15cba243626382","kind":"commit","published_at":"2018-07-13T22:59:06.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_10/manifests"},{"name":"rel_1_2_9","sha":"a9fb857d8196b7960f5867d0e0fbd584cf5fe71d","kind":"commit","published_at":"2018-06-29T17:36:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_9/manifests"},{"name":"rel_1_2_8","sha":"97b7b5d177ac20eadabf6b3ed8596faf9da6c934","kind":"commit","published_at":"2018-05-28T19:16:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_8/manifests"},{"name":"rel_1_2_7","sha":"b3a3af1f5a67422855446a5615de85165b367562","kind":"commit","published_at":"2018-04-20T20:28:18.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_7/manifests"},{"name":"rel_1_2_6","sha":"73781a7feb53426b20c66e060feba282db5f9d61","kind":"commit","published_at":"2018-03-30T20:24:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_6/manifests"},{"name":"rel_1_1_18","sha":"fb8e01a7df0666908cf99bc3ba82362411b3502b","kind":"commit","published_at":"2018-03-06T19:04:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_18","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_18/manifests"},{"name":"rel_1_2_5","sha":"79756da7706fb78de5296fad6a669ae3720f7aed","kind":"commit","published_at":"2018-03-06T18:51:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_5/manifests"},{"name":"rel_1_1_17","sha":"ee2e2662566af80d6d4c3fdfade8df7a74a72be8","kind":"commit","published_at":"2018-02-22T21:08:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_17","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_17/manifests"},{"name":"rel_1_2_4","sha":"d5745e3595738b3c17d7b8622f30a49e9bd8c668","kind":"commit","published_at":"2018-02-22T20:57:22.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_4/manifests"},{"name":"rel_1_2_3","sha":"0b11ce6656055b1edbd8add5b02f2eb62ffd0a4d","kind":"commit","published_at":"2018-02-16T23:15:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_3/manifests"},{"name":"rel_1_1_16","sha":"0dab4cbf3a6ecbec5cc27138c770f86e8f545b4c","kind":"commit","published_at":"2018-02-16T21:55:40.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_16","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_16/manifests"},{"name":"rel_1_2_2","sha":"0db496e2b8d236d0f372784877a29858996f3fd3","kind":"commit","published_at":"2018-01-25T02:24:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_2/manifests"},{"name":"rel_1_2_1","sha":"f9fbace89dee6a43b3e8ab1b50daa30caaacab79","kind":"commit","published_at":"2018-01-15T14:24:24.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_1/manifests"},{"name":"rel_1_2_0","sha":"fdece0a0cc5a614cef7073979afb097a6d9b6b45","kind":"commit","published_at":"2017-12-27T16:13:24.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_0/manifests"},{"name":"rel_1_1_15","sha":"0b33a8c48f184b6b530cfc4ee9af743c761845b2","kind":"commit","published_at":"2017-11-03T20:47:02.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_15","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_15/manifests"},{"name":"origin","sha":"dc4d1ee7bdf8f9670057e916a29f1f5252e77207","kind":"commit","published_at":"2017-09-26T22:47:48.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/origin","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/origin","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/origin","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/origin/manifests"},{"name":"rel_1_1_14","sha":"4b22b01ade6f94cc4db2f2040c802067a25d29a4","kind":"commit","published_at":"2017-09-05T14:26:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_14","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_14/manifests"},{"name":"rel_1_1_13","sha":"2d24d9c4f145088daadfc1e364a825b25f520047","kind":"commit","published_at":"2017-08-03T15:37:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_13","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_13/manifests"},{"name":"rel_1_0_19","sha":"54239e2ee6bb37a1d548d4b74089704b3f7217c8","kind":"commit","published_at":"2017-08-03T15:28:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_19","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_19/manifests"},{"name":"rel_1_2_0b2","sha":"32c4c8ace41a8eb269d4b6294a9cfac1d8411e7d","kind":"commit","published_at":"2017-07-24T21:22:23.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_0b2/manifests"},{"name":"rel_1_1_12","sha":"ad5626cdb9b4d4ac38b2169dc7377d4bc66ee549","kind":"commit","published_at":"2017-07-24T21:18:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_12","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_12/manifests"},{"name":"rel_1_0_18","sha":"f00391a070d9031941bb1c17aecb265b566a6a5b","kind":"commit","published_at":"2017-07-24T21:14:51.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_18","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_18/manifests"},{"name":"rel_1_2_0b1","sha":"e6555083d41accf983e5e8045956779c4fbc97a3","kind":"commit","published_at":"2017-07-10T13:23:28.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_2_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_2_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_2_0b1/manifests"},{"name":"rel_1_1_11","sha":"8d740d6bd6b8bcc061713443120c67e611cdcb34","kind":"commit","published_at":"2017-06-19T14:42:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_11/manifests"},{"name":"rel_1_1_10","sha":"158c0e858a87450e96675b28832f2835b84bd322","kind":"commit","published_at":"2017-05-19T20:11:30.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_10/manifests"},{"name":"rel_1_1_9","sha":"e48a9e78beffa41d8a60a01b336d11c86d055c51","kind":"commit","published_at":"2017-04-04T18:03:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_9/manifests"},{"name":"rel_1_1_8","sha":"f7ea0149fc0e7d7102e9d7da9fd0f98a52ec7bd0","kind":"commit","published_at":"2017-03-31T18:24:06.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_8/manifests"},{"name":"rel_1_1_7","sha":"dca69f3f1eeb4abb2d0195eb3df98c2ff234be34","kind":"commit","published_at":"2017-03-27T21:25:25.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_7/manifests"},{"name":"rel_1_1_6","sha":"d8080933f55f1a72aa672fab3cda451a0191d707","kind":"commit","published_at":"2017-02-28T16:41:24.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_6/manifests"},{"name":"rel_1_1_5","sha":"60781659934dd66975f8689403b9a664ba0ab85d","kind":"commit","published_at":"2017-01-17T21:23:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_5/manifests"},{"name":"rel_1_0_17","sha":"4d2f90dfa006a002286a0041fecd3003631fce06","kind":"commit","published_at":"2017-01-17T21:21:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_17","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_17/manifests"},{"name":"rel_1_1_4","sha":"ce17fd4bf361e6cd08b6e698e49c118643abe724","kind":"commit","published_at":"2016-11-15T17:58:52.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_4/manifests"},{"name":"rel_1_0_16","sha":"ff3c05defaa78d389ae6534828033bff198f12f5","kind":"commit","published_at":"2016-11-15T17:47:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_16","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_16/manifests"},{"name":"rel_1_1_3","sha":"2af8c155977651ecfac8215e62e2e1375e672b6b","kind":"commit","published_at":"2016-10-27T14:47:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_3/manifests"},{"name":"rel_1_1_2","sha":"2ee5d42e24d20e9e7a6bcef08976e018ccbcc718","kind":"commit","published_at":"2016-10-17T18:29:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_2/manifests"},{"name":"rel_1_1_1","sha":"80861dffa9f2a2564dd5e854d97006d9fff48a18","kind":"commit","published_at":"2016-10-07T15:04:37.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_1/manifests"},{"name":"rel_1_1_0","sha":"56e199416f386b796b834016f85572ef99588d40","kind":"commit","published_at":"2016-10-05T20:59:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0/manifests"},{"name":"rel_1_0_15","sha":"1b798fb9400190856ebe7cb646179ea5b6dc8e48","kind":"commit","published_at":"2016-09-01T17:10:50.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_15","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_15/manifests"},{"name":"rel_1_1_0b3","sha":"360b4e0565dc1ecdcef0625b23256268361e2c9d","kind":"commit","published_at":"2016-07-26T15:25:52.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_0b3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_0b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0b3/manifests"},{"name":"rel_1_0_14","sha":"e9a1d7bc6a0ae4ec09b6431d23d201654013c6a7","kind":"commit","published_at":"2016-07-06T21:10:19.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_14","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_14/manifests"},{"name":"rel_1_1_0b2","sha":"0e4469150acae9374aec5dff66ca996683c7c744","kind":"commit","published_at":"2016-07-01T14:47:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0b2/manifests"},{"name":"rel_1_1_0b1","sha":"0f581bcf259625108ba6e9bdcf177184b19257bf","kind":"commit","published_at":"2016-06-16T19:02:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_1_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_1_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_1_0b1/manifests"},{"name":"rel_1_0_13","sha":"f500bfee855e147323b753790b557e2fe06b83e2","kind":"commit","published_at":"2016-05-16T19:52:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_13","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_13/manifests"},{"name":"rel_1_0_12","sha":"256137b06536c9cb3204be38e59a8d0b3feceec7","kind":"commit","published_at":"2016-02-15T18:43:48.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_12","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_12/manifests"},{"name":"rel_1_0_11","sha":"3b517241ba9ec94d8f46fb1df81f6732dc8733c7","kind":"commit","published_at":"2015-12-23T01:40:53.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_11/manifests"},{"name":"rel_1_0_10","sha":"6b87e0b301f123359f8a32114a3e888d6dd05bfc","kind":"commit","published_at":"2015-12-11T20:55:17.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_10/manifests"},{"name":"rel_1_0_9","sha":"4260204647495eebd350008d070ae57fb865c8ed","kind":"commit","published_at":"2015-10-20T22:01:52.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_9/manifests"},{"name":"rel_1_0_8","sha":"552f1f135f66a1a3b9a1a8c3d5e1e6431e4fd234","kind":"commit","published_at":"2015-07-23T00:00:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_8/manifests"},{"name":"rel_0_9_10","sha":"e71cf56a835842cd7d7038d6527888cc1297005f","kind":"commit","published_at":"2015-07-22T17:37:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_10/manifests"},{"name":"rel_1_0_7","sha":"a4b8aa320d63f7c0dc7c70dfce56f0af593d95f0","kind":"commit","published_at":"2015-07-20T18:05:55.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_7/manifests"},{"name":"rel_1_0_6","sha":"447ee0af1d2fbb95f2f1244de301f2fe4a87a72f","kind":"commit","published_at":"2015-06-25T15:33:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_6/manifests"},{"name":"rel_1_0_5","sha":"3873d7db340835a38e6b191e8466fb42c3a9d3f6","kind":"commit","published_at":"2015-06-07T21:53:38.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_5/manifests"},{"name":"rel_1_0_4","sha":"148924821bf8c8537cf8ece740b26a61571215fb","kind":"commit","published_at":"2015-05-08T00:51:09.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_4/manifests"},{"name":"rel_1_0_3","sha":"3cfda0a3c9026f0a80a9763fe12b9d61b3ad2910","kind":"commit","published_at":"2015-05-01T01:33:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_3/manifests"},{"name":"rel_1_0_2","sha":"42c9fe1d1df0aa9b66076a2b4a33ab6c046f5b07","kind":"commit","published_at":"2015-04-24T22:03:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_2/manifests"},{"name":"rel_1_0_1","sha":"0fc751e4abea999b5cc7ba8c3a87a7a84cd5aa8c","kind":"commit","published_at":"2015-04-23T18:21:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_1/manifests"},{"name":"rel_1_0_0","sha":"9f468e305d0a6b42a1d384a70dcf8fb51effa693","kind":"commit","published_at":"2015-04-16T18:58:51.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0/manifests"},{"name":"rel_1_0_0b5","sha":"541a9751fc179720d2f0a6de062c238b16e5a65e","kind":"commit","published_at":"2015-04-03T18:02:36.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_0b5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_0b5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b5/manifests"},{"name":"rel_1_0_0b4","sha":"78b1850ae5649896da62135cb29b238adaad5c38","kind":"commit","published_at":"2015-03-29T14:05:16.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_0b4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_0b4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b4/manifests"},{"name":"rel_1_0_0_b3","sha":"7d6dfb4cf75e5e18d0f3854b47b1a062397f09d1","kind":"commit","published_at":"2015-03-20T23:54:45.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_0_b3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_0_b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0_b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0_b3/manifests"},{"name":"rel_1_0_0b2","sha":"1bcd99bec9eb0d17dba76214d278d6012f35f41b","kind":"commit","published_at":"2015-03-20T20:09:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b2/manifests"},{"name":"rel_1_0_0b1","sha":"175e5c97a7f20d774e27fe66a141a12f341be9ad","kind":"commit","published_at":"2015-03-13T20:40:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_1_0_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_1_0_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_1_0_0b1/manifests"},{"name":"rel_0_9_9","sha":"3e3f9e8488253e5ccf4e37a46d234f7724974f4a","kind":"commit","published_at":"2015-03-10T19:57:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_9/manifests"},{"name":"rel_0_9_8","sha":"ff34c480dfd2b8b7c72339d196f5477980a5124c","kind":"commit","published_at":"2014-10-13T17:10:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_8/manifests"},{"name":"rel_0_9_7","sha":"1239cf2c0a428fd54aea0c40992946256012ccfb","kind":"commit","published_at":"2014-07-22T20:56:22.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_7/manifests"},{"name":"rel_0_8_7","sha":"807680a9ec1e866d7eee997ca051c1b14964d742","kind":"commit","published_at":"2014-07-22T20:56:14.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_7/manifests"},{"name":"rel_0_9_6","sha":"d7641af22c9aaa53ba1b6f2abab12d99dbd7acf4","kind":"commit","published_at":"2014-06-23T23:01:30.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_6/manifests"},{"name":"rel_0_9_5","sha":"847c0a8cbef98715bf4ae441882b06d90dbe0d80","kind":"commit","published_at":"2014-06-23T15:17:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_5/manifests"},{"name":"rel_0_8_6","sha":"6bb74b6ede5d7eedded3385c7a2b5736869ff05a","kind":"commit","published_at":"2014-03-28T23:40:21.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_6/manifests"},{"name":"rel_0_9_4","sha":"ccc0c44c3a60fc4906e5e3b26cc6d2b7a69d33bf","kind":"commit","published_at":"2014-03-28T23:40:09.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_4/manifests"},{"name":"rel_0_9_3","sha":"5c88f38c7259780e9acc18cc8752110b1d369c23","kind":"commit","published_at":"2014-02-20T04:09:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_3/manifests"},{"name":"rel_0_8_5","sha":"1366ef9f1cbbddbb0d7fb5b852ba6cd1bfdc7216","kind":"commit","published_at":"2014-02-20T03:59:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_5/manifests"},{"name":"rel_0_9_2","sha":"37d1f8983ce4bfbfd517cf8db7a44ed785c8474f","kind":"commit","published_at":"2014-02-03T00:28:41.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_2/manifests"},{"name":"rel_0_9_1","sha":"9d69035a1d7f78c71e5467e1dde828d099f30144","kind":"commit","published_at":"2014-01-06T00:29:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_1/manifests"},{"name":"rel_0_9_0","sha":"f00657fa8a3a484d3a9207c67c0a1d20ab8313bb","kind":"commit","published_at":"2013-12-30T23:31:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_0/manifests"},{"name":"rel_0_8_4","sha":"6fb499599a948aae7ba83c69f3855ce01f888178","kind":"commit","published_at":"2013-12-08T20:01:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_4/manifests"},{"name":"rel_0_9_0b1","sha":"70e24eecee436baf770bdc7d562ac5ebaccb4802","kind":"commit","published_at":"2013-10-26T20:57:49.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_9_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_9_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_9_0b1/manifests"},{"name":"rel_0_8_3","sha":"abb4e5314a19abd538dc518c12a4e54a8840c695","kind":"commit","published_at":"2013-10-26T20:38:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_3/manifests"},{"name":"rel_0_8_2","sha":"57da64432020d1769f9c55713296fef1f7c4a1cf","kind":"commit","published_at":"2013-07-03T20:07:51.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_2/manifests"},{"name":"git-to-hg-map","sha":"2b1e70d406515cbcc344b879de49f1e0602af661","kind":"tag","published_at":"2013-05-25T19:50:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/git-to-hg-map","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/git-to-hg-map","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/git-to-hg-map","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/git-to-hg-map/manifests"},{"name":"rel_0_8_1","sha":"2cf49d898d3a10d1c7a5ac87dd015691d51f9248","kind":"commit","published_at":"2013-04-27T21:27:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_1/manifests"},{"name":"rel_0_8_0","sha":"2a20fd85d7f1c836c290975ea6c623420a83675d","kind":"commit","published_at":"2013-03-10T01:40:17.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_0/manifests"},{"name":"rel_0_7_10","sha":"7b2088b0be45684fb6f40ccff3a0fc5d00e49b2e","kind":"commit","published_at":"2013-02-08T00:28:37.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_10/manifests"},{"name":"rel_0_8_0b2","sha":"332560b1fd0917a0e7dbeb295d48d045ee6f6887","kind":"commit","published_at":"2012-12-14T20:40:05.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_0b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_0b2/manifests"},{"name":"rel_0_8_0b1","sha":"d2e8b5e36cb3abbad7466f3ca89f01f7d083ae6a","kind":"commit","published_at":"2012-10-30T23:09:01.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_8_0b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_8_0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_8_0b1/manifests"},{"name":"rel_0_7_9","sha":"b26bbaa14e5318140bf463fc1e1a9540e3c65e10","kind":"commit","published_at":"2012-10-01T22:36:12.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_9/manifests"},{"name":"rel_0_7_8","sha":"37b807cd04d4ab3a6acbd05fba10805c69794de5","kind":"commit","published_at":"2012-06-17T00:58:00.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_8/manifests"},{"name":"rel_0_6_9","sha":"80885ab33079a98207b4bf9fd5766fe68462e6a1","kind":"commit","published_at":"2012-05-05T22:48:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_9/manifests"},{"name":"rel_0_7_7","sha":"c91fd10f5cf38c6cb896420c0306e9f925e6048e","kind":"commit","published_at":"2012-05-05T22:48:03.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_7/manifests"},{"name":"rel_0_7_6","sha":"bd85bcc0cf1353ebec648ab294bfb407745d8c82","kind":"commit","published_at":"2012-03-15T04:23:09.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_6/manifests"},{"name":"rel_0_7_5","sha":"667249f7b19325e1512f1a9ece29c5894e679508","kind":"commit","published_at":"2012-01-28T22:43:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_5/manifests"},{"name":"rel_0_7_4","sha":"5421b51a479a4c04da5175b58c8d8557ba2bc51c","kind":"commit","published_at":"2011-12-09T22:15:02.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_4/manifests"},{"name":"rel_0_7_3","sha":"8aa229cf84cea6934bd1a041f86dadd0304a58b6","kind":"commit","published_at":"2011-10-16T18:24:29.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_3/manifests"},{"name":"rel_0_7_2","sha":"b088914265cc3e918c95d1e419234a497a8a9559","kind":"commit","published_at":"2011-07-31T23:12:31.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_2/manifests"},{"name":"rel_0_6_8","sha":"99409a9db3fe4d4e97d429ba9a3a6ecc6d130709","kind":"commit","published_at":"2011-06-05T16:49:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_8/manifests"},{"name":"rel_0_7_1","sha":"772ae63bdbfb82509bf2df20e56722b4cdc6186b","kind":"commit","published_at":"2011-06-05T16:32:04.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_1/manifests"},{"name":"rel_0_7_0","sha":"ef654af35ab2443172eb79e6f279792b72980539","kind":"commit","published_at":"2011-05-20T21:53:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7_0/manifests"},{"name":"rel_0_7b4","sha":"4dd69ff878b2b7fe60a48ba7d12c29183a5f8012","kind":"commit","published_at":"2011-04-17T20:51:04.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7b4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7b4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b4/manifests"},{"name":"rel_0_6_7","sha":"bfa8b23ef0bc6e25057c21b6e5722b8c153f20ea","kind":"commit","published_at":"2011-04-14T00:02:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_7/manifests"},{"name":"rel_0_7b3","sha":"b6423d26280cac2ff74ab1450ce5549789ffa61e","kind":"commit","published_at":"2011-03-20T18:54:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7b3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b3/manifests"},{"name":"rel_0_7b2","sha":"e6d00f8234d6f31113447098181eb5a722085c33","kind":"commit","published_at":"2011-02-19T18:11:34.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7b2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b2/manifests"},{"name":"rel_0_7b1","sha":"53aab63b6c24dfdcc249ada5c9d712dc42e5ae40","kind":"commit","published_at":"2011-02-12T23:00:45.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_7b1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_7b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_7b1/manifests"},{"name":"rel_0_6_6","sha":"19e6a5c9555edaa1401e5e09ebd3fc1c6561c6d3","kind":"commit","published_at":"2011-01-08T22:19:19.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_6/manifests"},{"name":"rel_0_6_5","sha":"b96e6232a42918692e95b32b7dd3723cd4a242bb","kind":"commit","published_at":"2010-10-24T17:26:34.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_5/manifests"},{"name":"rel_0_6_4","sha":"992dd2c055dcff75953695d20813f43d858997d9","kind":"commit","published_at":"2010-09-07T16:37:43.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_4/manifests"},{"name":"rel_0_6_3","sha":"2bd3c795cfe39249aceb6b04ea4650a17788d9b6","kind":"commit","published_at":"2010-07-15T13:59:17.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_3/manifests"},{"name":"rel_0_6_2","sha":"7e72edc9d39966721f2731ef2dbf508ca4a03e4c","kind":"commit","published_at":"2010-07-06T21:39:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_2/manifests"},{"name":"rel_0_6_1","sha":"1bd54fd9c854044d8153dba0f6dd261bf6bb6bff","kind":"commit","published_at":"2010-05-31T18:47:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_1/manifests"},{"name":"rel_0_6_0","sha":"63cea59c0596b872a464fa19d5a25c2a2c32ef49","kind":"commit","published_at":"2010-04-18T23:13:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6_0/manifests"},{"name":"rel_0_6beta3","sha":"0e6d10806a49bbac5276ae271cc23218138cac08","kind":"commit","published_at":"2010-03-28T17:17:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6beta3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6beta3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6beta3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6beta3/manifests"},{"name":"rel_0_6beta2","sha":"1d6d350c72c90ef31a5753419d8d55299a123997","kind":"commit","published_at":"2010-03-20T18:42:27.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6beta2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6beta2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6beta2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6beta2/manifests"},{"name":"rel_0_6beta1","sha":"fba9709593ae7b24a53ff6f28cbc5f457f8c9d37","kind":"commit","published_at":"2010-02-03T16:59:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_6beta1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_6beta1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_6beta1/manifests"},{"name":"rel_0_5_8","sha":"6dbd034ca688a1b04d54706da115cf1e2ed1797e","kind":"commit","published_at":"2010-01-16T20:28:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_8/manifests"},{"name":"rel_0_5_7","sha":"b4977c9ba8f606fb451855832a755b46c105a545","kind":"commit","published_at":"2009-12-26T23:01:43.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_7/manifests"},{"name":"rel_0_5_6","sha":"654d245c91c9eae6d5dd80bce4f20f90c358a51e","kind":"commit","published_at":"2009-09-12T23:53:03.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_6/manifests"},{"name":"rel_0_5_5","sha":"5503028d8cc404bb28fd5760f5ba6c27cfc37ae2","kind":"commit","published_at":"2009-07-13T02:04:54.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_5/manifests"},{"name":"rel_0_5_4p2","sha":"853992649c64252c3959b76600434f9cab05288c","kind":"commit","published_at":"2009-05-26T17:03:03.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_4p2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_4p2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_4p2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_4p2/manifests"},{"name":"rel_0_5_4p1","sha":"7ff23a5218e05ae7e543e31f18b1a3fbe650e4cb","kind":"commit","published_at":"2009-05-18T16:21:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_4p1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_4p1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_4p1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_4p1/manifests"},{"name":"rel_0_5_4","sha":"d7e531ce9f0def1f08d78b3a7a7d6f268c5eb0bb","kind":"commit","published_at":"2009-05-17T22:58:21.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_4/manifests"},{"name":"rel_0_5_3","sha":"3223bafafef36e3bb314ea0a0658230eb80ca382","kind":"commit","published_at":"2009-03-24T01:22:38.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_3/manifests"},{"name":"rel_0_5_2","sha":"c10104f0a89d2ef4bc4ea08aed8f1237d051351d","kind":"commit","published_at":"2009-01-24T17:29:56.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_2/manifests"},{"name":"rel_0_5_1","sha":"86fcffc854540e87d56e5e0d49273a9411af32f6","kind":"commit","published_at":"2009-01-17T21:43:19.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_1/manifests"},{"name":"rel_0_5_0","sha":"0e79d6e28ea8e68a4ee4a58c138115608a30e41b","kind":"commit","published_at":"2009-01-06T18:30:38.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5_0/manifests"},{"name":"rel_0_5rc4","sha":"1214e74a3853b325adbae4e99610f362a10a7ce9","kind":"commit","published_at":"2008-11-14T21:36:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5rc4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5rc4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc4/manifests"},{"name":"rel_0_5rc3","sha":"0a48075161755660ca05e73efadc37a750176c06","kind":"commit","published_at":"2008-11-07T18:43:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5rc3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5rc3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc3/manifests"},{"name":"rel_0_5rc2","sha":"4ca89fd3c4129551174aadd686db9f96bac0ba61","kind":"commit","published_at":"2008-10-12T14:39:20.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5rc2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc2/manifests"},{"name":"rel_0_4_8","sha":"bfc90aa6c69511fc71aa6079ecc86e9315b042b7","kind":"commit","published_at":"2008-10-12T14:39:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_8/manifests"},{"name":"rel_0_5rc1","sha":"01de7110984604e731d19a751a829d21f62106f8","kind":"commit","published_at":"2008-09-11T20:48:39.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5rc1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5rc1/manifests"},{"name":"rel_0_5beta3","sha":"045d0d63ea004f1fa2a0cb1ca171065caa1d3455","kind":"commit","published_at":"2008-08-04T19:53:04.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5beta3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5beta3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5beta3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5beta3/manifests"},{"name":"rel_0_4_7p1","sha":"7f5344b3258748c75a28716651d9dbbfe1d22355","kind":"commit","published_at":"2008-07-31T15:02:40.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_7p1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_7p1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_7p1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_7p1/manifests"},{"name":"rel_0_4_7","sha":"deeee6eb33ffa392d200d5c4e8924b85c6ba33b6","kind":"commit","published_at":"2008-07-26T16:30:59.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_7/manifests"},{"name":"rel_0_5beta2","sha":"44aa875212bfe01882f2a24bfb01cba833d3574b","kind":"commit","published_at":"2008-07-14T20:04:35.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5beta2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5beta2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5beta2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5beta2/manifests"},{"name":"rel_0_5beta1","sha":"d3fb8ff9044b6dcaec7a983ecb99498a5669e9de","kind":"commit","published_at":"2008-06-12T20:29:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_5beta1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_5beta1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_5beta1/manifests"},{"name":"rel_0_4_6","sha":"6595a5af31ee473f4388db5917c59f0965a64279","kind":"commit","published_at":"2008-05-10T17:31:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_6/manifests"},{"name":"rel_0_4_5","sha":"a83d216ab6e8d064013107ba981e910b04986e8d","kind":"commit","published_at":"2008-04-04T00:58:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_5/manifests"},{"name":"rel_0_4_4","sha":"07d89b09bb99c25309b116ee6cee7620cd0c4723","kind":"commit","published_at":"2008-03-12T00:02:41.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_4/manifests"},{"name":"rel_0_4_3","sha":"14b3a913ac29dd8b37a616701bf13fb6541f5370","kind":"commit","published_at":"2008-02-14T23:41:17.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_3/manifests"},{"name":"rel_0_4_2p3","sha":"0a860c6fb007304cedc12afd7a3ae2766e052bb6","kind":"commit","published_at":"2008-01-09T21:37:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_2p3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_2p3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2p3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2p3/manifests"},{"name":"rel_0_4_2b","sha":"500982b7b37b9f13d8d9b574887e20a3e654e7b0","kind":"commit","published_at":"2008-01-07T19:59:23.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_2b","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_2b","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2b","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2b/manifests"},{"name":"rel_0_4_2a","sha":"829e9f8a911ed77abd9ffb30d3c6cbd27465d410","kind":"commit","published_at":"2008-01-05T18:27:12.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_2a","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_2a","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2a","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2a/manifests"},{"name":"rel_0_4_2","sha":"e12075efa8b5eb45a918cc150218921d88dc2bec","kind":"commit","published_at":"2008-01-02T01:34:25.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_2/manifests"},{"name":"rel_0_4_1","sha":"051e43245daabb6d96978d32f220f494ab0f026f","kind":"commit","published_at":"2007-11-18T22:47:55.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_1/manifests"},{"name":"rel_0_4_0","sha":"a5e01cafdb2dd6d2726616144df6b4be387c2bb2","kind":"commit","published_at":"2007-10-17T17:53:12.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4_0/manifests"},{"name":"rel_0_3_11","sha":"d12392c38d570b4a3c14a02c75e2ea9476c34ffb","kind":"commit","published_at":"2007-10-14T19:15:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_11","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_11/manifests"},{"name":"rel_0_4beta6","sha":"e3b06dc83e7990f07abb00287be7a4ab2d1e4494","kind":"commit","published_at":"2007-09-27T00:28:58.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4beta6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4beta6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta6/manifests"},{"name":"rel_0_4beta4","sha":"8b80f9132d2e6e05686fe886a132e435217ffdbd","kind":"commit","published_at":"2007-08-22T19:36:54.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4beta4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4beta4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta4/manifests"},{"name":"rel_0_4beta3","sha":"a8946d368201b583ccabc26626f10bf8234deb86","kind":"commit","published_at":"2007-08-16T15:12:57.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4beta3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4beta3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta3/manifests"},{"name":"rel_0_4beta2","sha":"054e76df44a01da99ec9cbed8b56b270e98839ec","kind":"commit","published_at":"2007-08-14T14:32:50.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4beta2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4beta2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta2/manifests"},{"name":"rel_0_4beta1","sha":"cce281e05671c8b026470927e4e64784aa4ce2d6","kind":"commit","published_at":"2007-08-12T16:19:52.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_4beta1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_4beta1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_4beta1/manifests"},{"name":"rel_0_3_10","sha":"bdf8f4ca80ed2a49bb4f1beea57ca5e1061681cf","kind":"commit","published_at":"2007-07-20T21:01:51.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_10","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_10/manifests"},{"name":"rel_0_3_9","sha":"40ded34819bb2a65ef02042bf60e075d65123592","kind":"commit","published_at":"2007-07-15T16:27:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_9","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_9/manifests"},{"name":"rel_0_3_8","sha":"cbc33de2fe6c0088f642c6866e58ee268eb52e31","kind":"commit","published_at":"2007-06-02T20:33:15.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_8/manifests"},{"name":"rel_0_3_7","sha":"dfc633b08b49f8b7ed083af3b274d28df2fbe316","kind":"commit","published_at":"2007-04-29T23:47:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_7/manifests"},{"name":"rel_0_3_6","sha":"e07cf69deff7e2a9152b41385c4505f1acaa958b","kind":"commit","published_at":"2007-03-23T21:38:12.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_6/manifests"},{"name":"rel_0_3_5","sha":"b59f4d1a4a81144ac58e9d39bc2c36893741f818","kind":"commit","published_at":"2007-02-22T03:51:21.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_5/manifests"},{"name":"rel_0_3_4","sha":"b8662333bbd20194ca3117835e7e1ca0bb4d3c0b","kind":"commit","published_at":"2007-01-23T20:25:48.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_4/manifests"},{"name":"rel_0_3_3","sha":"f5b5696afddacdd7c5a5ede716e7241e5fa5c97e","kind":"commit","published_at":"2006-12-15T07:43:42.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_3/manifests"},{"name":"rel_0_3_2","sha":"ae3f1bc240ae4449a1700612cb98f0d85bd28317","kind":"commit","published_at":"2006-12-10T18:05:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_2/manifests"},{"name":"rel_0_3_1","sha":"cb8737e6f86352620e773cff54f5a6b41253983c","kind":"commit","published_at":"2006-11-13T00:42:54.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_1/manifests"},{"name":"rel_0_3_0","sha":"0be0131a448f43aa4969792aa0158551163ce499","kind":"commit","published_at":"2006-10-22T19:10:44.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_3_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_3_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_3_0/manifests"},{"name":"rel_0_2_8","sha":"f2d050180a6d586615840a3a8dc760a438c8eae2","kind":"commit","published_at":"2006-09-05T17:19:26.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_8","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_8/manifests"},{"name":"rel_0_2_7","sha":"ae5e73cbc144239738d394ccbc835965bde2b39a","kind":"commit","published_at":"2006-08-12T22:58:49.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_7/manifests"},{"name":"rel_0_2_6","sha":"0b7557a30a94b38c816499dc7e854214120b68cf","kind":"commit","published_at":"2006-07-20T01:00:30.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_6/manifests"},{"name":"rel_0_2_5","sha":"dd1d21c166516b9aacd89d7b883b09d7d1f197df","kind":"commit","published_at":"2006-07-08T17:11:58.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_5/manifests"},{"name":"rel_0_2_4","sha":"7626fc5aab8b625bb6e48e7374d4622efc7f1e5a","kind":"commit","published_at":"2006-06-27T23:56:14.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_4/manifests"},{"name":"rel_0_2_3","sha":"1ffed8432e282aa57ecde9f3e4ca778a1756ddc0","kind":"commit","published_at":"2006-06-17T00:53:33.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_3/manifests"},{"name":"rel_0_2_2","sha":"8ce1d43bb568fa3123c4f040d50713d998b80b83","kind":"commit","published_at":"2006-06-05T19:27:47.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_2/manifests"},{"name":"rel_0_2_1","sha":"d689e12595bc25d8bcb31c84d3d6d29cb47258ba","kind":"commit","published_at":"2006-05-29T03:14:11.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_1/manifests"},{"name":"rel_0_2_0","sha":"967171f5afd1e5c04e786052ea82f2813023db2b","kind":"commit","published_at":"2006-05-27T20:33:41.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_2_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_2_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_2_0/manifests"},{"name":"rel_0_1_7","sha":"a454f2e87da26226cad7e7089abed7ca152cc329","kind":"commit","published_at":"2006-05-05T17:45:06.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_7","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_7/manifests"},{"name":"rel_0_1_6","sha":"4022b1359d30daa7b7fcb0fbc8e7a4e2ac4b0551","kind":"commit","published_at":"2006-04-12T19:40:43.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_6","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_6/manifests"},{"name":"rel_0_1_5","sha":"b3db76d449966de741201e47b58062d2ac8d1dc8","kind":"commit","published_at":"2006-03-27T03:12:27.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_5","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_5/manifests"},{"name":"rel_0_1_4","sha":"c081749aa65d148fea40adc940fa7ebbfb892224","kind":"commit","published_at":"2006-03-13T17:32:13.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_4","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_4/manifests"},{"name":"rel_0_1_3","sha":"ecebb7cd87b0c545c2d050b010724d79d0568258","kind":"commit","published_at":"2006-03-02T01:48:58.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_3","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_3/manifests"},{"name":"rel_0_1_2","sha":"94ac052104cd07ae0dace2d1b1ac6a7144412c44","kind":"commit","published_at":"2006-02-24T00:28:10.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_2","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_2/manifests"},{"name":"rel_0_1_1","sha":"0e15f047502bd3c17d008f95737119e0e3188658","kind":"commit","published_at":"2006-02-23T02:47:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_1","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_1/manifests"},{"name":"rel_0_1_0","sha":"4d78d5f3ab1bc5b4d41f086fecc5acc36ead45af","kind":"commit","published_at":"2006-02-14T02:40:07.000Z","download_url":"https://codeload.github.com/sqlalchemy/sqlalchemy/tar.gz/rel_0_1_0","html_url":"https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_0_1_0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sqlalchemy%2Fsqlalchemy/tags/rel_0_1_0/manifests"}]},"repo_metadata_updated_at":"2024-09-08T01:58:46.538Z","dependent_packages_count":2692,"downloads":161329165,"downloads_period":"last-month","dependent_repos_count":53487,"rankings":{"downloads":0.009537661842199384,"dependent_repos_count":0.02567832034438296,"dependent_packages_count":0.010087911563864734,"stargazers_count":0.601606362354115,"forks_count":1.5749981199801175,"docker_downloads_count":0.07299979640760298,"average":0.38248469541538044},"purl":"pkg:pypi/sqlalchemy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/sqlalchemy","docker_dependents_count":1118,"docker_downloads_count":1065164081,"usage_url":"https://repos.ecosyste.ms/usage/pypi/sqlalchemy","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/sqlalchemy/dependencies","status":null,"funding_links":["https://github.com/sponsors/sqlalchemy","https://patreon.com/zzzeek","https://tidelift.com/funding/github/pypi/SQLAlchemy"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sqlalchemy/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sqlalchemy/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sqlalchemy/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sqlalchemy/related_packages","maintainers":[{"uuid":"CaselIT","login":"CaselIT","name":null,"email":null,"url":null,"packages_count":16,"html_url":"https://pypi.org/user/CaselIT/","role":null,"created_at":"2022-11-14T18:31:26.308Z","updated_at":"2022-11-14T18:31:26.308Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/CaselIT/packages"},{"uuid":"SQLAlchemy","login":"SQLAlchemy","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/SQLAlchemy/","role":null,"created_at":"2024-08-31T16:20:33.930Z","updated_at":"2024-08-31T16:20:33.930Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/SQLAlchemy/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690057,"maintainers_count":292646,"namespaces_count":0,"keywords_count":228482,"github":"pypi","metadata":{"funded_packages_count":48953},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-05T05:19:27.498Z","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":1362,"unique_repositories_count_past_30_days":30,"recent_issues":[{"uuid":"4815066159","node_id":"PR_kwDORuqI6s7uI7uh","number":242,"state":"open","title":"chore(deps): bump the backend-prod group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-06T00:35:24.000Z","updated_at":"2026-07-06T00:36:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend-prod","update_count":5,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.139.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.49.0","new_version":"0.50.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pydantic","old_version":"2.13.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-prod group with 5 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.139.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.49.0` | `0.50.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.50` | `2.0.51` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.2` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n\n\nUpdates `fastapi` from 0.136.3 to 0.139.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.139.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authentication for the frontend. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15908\"\u003e#15908\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15897\"\u003e#15897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15895\"\u003e#15895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15896\"\u003e#15896\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15899\"\u003e#15899\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15892\"\u003e#15892\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15891\"\u003e#15891\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15893\"\u003e#15893\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15898\"\u003e#15898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15900\"\u003e#15900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15890\"\u003e#15890\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15894\"\u003e#15894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15888\"\u003e#15888\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15880\"\u003e#15880\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15889\"\u003e#15889\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15883\"\u003e#15883\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15885\"\u003e#15885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15882\"\u003e#15882\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15887\"\u003e#15887\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15886\"\u003e#15886\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15881\"\u003e#15881\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15884\"\u003e#15884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15879\"\u003e#15879\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15909\"\u003e#15909\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15906\"\u003e#15906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15878\"\u003e#15878\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Remove not needed \u003ccode\u003eallow-unsafe-pr-checkout: true\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15876\"\u003e#15876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15872\"\u003e#15872\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 10 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15870\"\u003e#15870\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15826\"\u003e#15826\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cecd96d9c6c318e0df1c40cedbc2e953381ddfd3\"\u003e\u003ccode\u003ececd96d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.139.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15910\"\u003e#15910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aea660936b55fdbd84270d24f892839388922dd6\"\u003e\u003ccode\u003eaea6609\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/319be508ce7db9ee5f52c3b9baa68c6cc1037c10\"\u003e\u003ccode\u003e319be50\u003c/code\u003e\u003c/a\u003e ✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/66a90f6ee9c0cf58ec61b14f8925344d6f16eae5\"\u003e\u003ccode\u003e66a90f6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d30a3ebfc7d7fd7851ba4243677266c53cb9f154\"\u003e\u003ccode\u003ed30a3eb\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15909\"\u003e#15909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/122f1b58f4e0fabfefef3710a8c8247bb2bd820b\"\u003e\u003ccode\u003e122f1b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd6ece32eeb27c9ce164bd9170f9d8e1db1dacff\"\u003e\u003ccode\u003efd6ece3\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI GitHub topic repositories (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15906\"\u003e#15906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ec2a6adaf14c440bdcd0fd3f4ca203daa8c3ba6a\"\u003e\u003ccode\u003eec2a6ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9d7d7febd3a66844f948254c1ba4745b6cc16f40\"\u003e\u003ccode\u003e9d7d7fe\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for fr (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15897\"\u003e#15897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8dc852df4713efa998d126c5194302e9f06e7675\"\u003e\u003ccode\u003e8dc852d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.3...0.139.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.49.0 to 0.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.50.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMemoize trusted host checks to avoid re-parsing the client IP per request by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2970\"\u003eKludex/uvicorn#2970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003easgi\u003c/code\u003e scope sub-dict per connection by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2976\"\u003eKludex/uvicorn#2976\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild a fresh \u003ccode\u003easgi\u003c/code\u003e scope dict per request by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2977\"\u003eKludex/uvicorn#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace click.style with an internal ANSI style helper by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2981\"\u003eKludex/uvicorn#2981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid copying single-frame WebSocket payloads in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2983\"\u003eKludex/uvicorn#2983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate the legacy websockets implementation and default \u003ccode\u003eauto\u003c/code\u003e to websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2985\"\u003eKludex/uvicorn#2985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExit with a dedicated code on startup failure and stop the supervisor when a worker can't boot by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3001\"\u003eKludex/uvicorn#3001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip the eager app import in the parent when spawning workers by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3012\"\u003eKludex/uvicorn#3012\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.49.0...0.50.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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.50.0 (July 4, 2026)\u003c/h2\u003e\n\u003cp\u003eIf you use WebSockets, note that \u003ccode\u003e--ws auto\u003c/code\u003e now picks the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation. You shouldn't need it, but you can pin \u003ccode\u003e--ws websockets\u003c/code\u003e to get the deprecated legacy one back.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExit with the dedicated code 3 on any startup failure: app loading, socket bind and lifespan startup errors previously exited with a mix of 0, 1 and 3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop the multiprocess supervisor when a worker exits with code 3 instead of restarting it forever (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDefault \u003ccode\u003e--ws auto\u003c/code\u003e to \u003ccode\u003ewebsockets-sansio\u003c/code\u003e when websockets is installed (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip the eager app import in the parent process with \u003ccode\u003e--reload\u003c/code\u003e or \u003ccode\u003e--workers\u003c/code\u003e, fixing a memory regression introduced in 0.47.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild a fresh \u003ccode\u003easgi\u003c/code\u003e scope dict per request (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003easgi\u003c/code\u003e scope sub-dict per connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid copying single-frame WebSocket payloads in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoize trusted host checks in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eclick.style\u003c/code\u003e with an internal ANSI style helper (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2981\"\u003e#2981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate the legacy \u003ccode\u003ewebsockets\u003c/code\u003e implementation; use \u003ccode\u003ewebsockets-sansio\u003c/code\u003e or \u003ccode\u003ewsproto\u003c/code\u003e instead (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21d2c16fd162ce0e92b5c35f4aadca63a8b12e2d\"\u003e\u003ccode\u003e21d2c16\u003c/code\u003e\u003c/a\u003e Version 0.50.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6c42e8d63bc41e7b721d30b33ff97c7e2fc27ce4\"\u003e\u003ccode\u003e6c42e8d\u003c/code\u003e\u003c/a\u003e Skip the eager app import in the parent when spawning workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/56a4631c98bdfa8f4712214e3910add5e5e7d7ba\"\u003e\u003ccode\u003e56a4631\u003c/code\u003e\u003c/a\u003e Exit with a dedicated code on startup failure and stop the supervisor when a ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3314dfcc18835a4d4afbac4b0c4b8f0ee0d5095d\"\u003e\u003ccode\u003e3314dfc\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3007\"\u003e#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/e8a31bca03254b8457c4c89596e310282cc33edc\"\u003e\u003ccode\u003ee8a31bc\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 9 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8d088b18f1ead0d75a0603d983300717079f9025\"\u003e\u003ccode\u003e8d088b1\u003c/code\u003e\u003c/a\u003e Deprecate the legacy websockets implementation and default \u003ccode\u003eauto\u003c/code\u003e to websocke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5b08cf6374430ce47de74ff2e594b277d09db17e\"\u003e\u003ccode\u003e5b08cf6\u003c/code\u003e\u003c/a\u003e Avoid copying single-frame WebSocket payloads in websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/bf3f60c28e92178878ecf043b858ab55cd97c223\"\u003e\u003ccode\u003ebf3f60c\u003c/code\u003e\u003c/a\u003e Replace click.style with an internal ANSI style helper (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2981\"\u003e#2981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eea1bcc895349d0f3c5e2fe8229d6484f801a1c4\"\u003e\u003ccode\u003eeea1bcc\u003c/code\u003e\u003c/a\u003e Build a fresh \u003ccode\u003easgi\u003c/code\u003e scope dict per request (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/afed2116795358dee707dbfc890b9eb5106d4720\"\u003e\u003ccode\u003eafed211\u003c/code\u003e\u003c/a\u003e Cache the \u003ccode\u003easgi\u003c/code\u003e scope sub-dict per connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0\"\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.50 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `pydantic` from 2.13.2 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.13.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\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/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.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 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/SafeVixAI/SafeVixAI/pull/242","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SafeVixAI%2FSafeVixAI/issues/242","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/242/packages"},{"uuid":"4806963494","node_id":"PR_kwDOSG1b6s7twtxt","number":4,"state":"closed","title":"chore(deps): bump the backend group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-07-04T00:31:19.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-04T00:02:18.000Z","updated_at":"2026-07-04T00:31:42.000Z","time_to_close":1741,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend","update_count":30,"packages":[{"name":"fastapi","old_version":"0.135.1","new_version":"0.139.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.14.0","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"cryptography","old_version":"46.0.5","new_version":"49.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"typer","old_version":"0.24.1","new_version":"0.26.8","repository_url":"https://github.com/fastapi/typer"}],"path":null,"ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nUpdates the requirements on [fastapi](https://github.com/fastapi/fastapi), [uvicorn](https://github.com/Kludex/uvicorn), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy), [alembic](https://github.com/sqlalchemy/alembic), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [cryptography](https://github.com/pyca/cryptography), [httpx](https://github.com/encode/httpx), [typer](https://github.com/fastapi/typer), [redis](https://github.com/redis/redis-py), [celery](https://github.com/celery/celery), [grpcio](https://github.com/grpc/grpc), [grpcio-reflection](https://grpc.io), [protobuf](https://github.com/protocolbuffers/protobuf), [reportlab](https://www.reportlab.com/), [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz), [prometheus-client](https://github.com/prometheus/client_python), [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator), [neo4j](https://github.com/neo4j/neo4j-python-driver), [chromadb](https://github.com/chroma-core/chroma), [groq](https://github.com/groq/groq-python), [pyotp](https://github.com/pyauth/pyotp), [pybind11](https://github.com/pybind/pybind11), [fakeredis](https://github.com/cunla/fakeredis-py), [pytest](https://github.com/pytest-dev/pytest), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio), [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit), [websockets](https://github.com/python-websockets/websockets), [keyring](https://github.com/jaraco/keyring) and [textual](https://github.com/Textualize/textual) to permit the latest version.\nUpdates `fastapi` from 0.135.1 to 0.139.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.139.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authentication for the frontend. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15908\"\u003e#15908\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15897\"\u003e#15897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15895\"\u003e#15895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15896\"\u003e#15896\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15899\"\u003e#15899\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15892\"\u003e#15892\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15891\"\u003e#15891\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15893\"\u003e#15893\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15898\"\u003e#15898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15900\"\u003e#15900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15890\"\u003e#15890\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15894\"\u003e#15894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15888\"\u003e#15888\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15880\"\u003e#15880\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15889\"\u003e#15889\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15883\"\u003e#15883\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15885\"\u003e#15885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15882\"\u003e#15882\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15887\"\u003e#15887\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15886\"\u003e#15886\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15881\"\u003e#15881\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15884\"\u003e#15884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15879\"\u003e#15879\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15909\"\u003e#15909\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15906\"\u003e#15906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15878\"\u003e#15878\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Remove not needed \u003ccode\u003eallow-unsafe-pr-checkout: true\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15876\"\u003e#15876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15872\"\u003e#15872\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 10 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15870\"\u003e#15870\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15826\"\u003e#15826\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cecd96d9c6c318e0df1c40cedbc2e953381ddfd3\"\u003e\u003ccode\u003ececd96d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.139.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15910\"\u003e#15910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aea660936b55fdbd84270d24f892839388922dd6\"\u003e\u003ccode\u003eaea6609\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/319be508ce7db9ee5f52c3b9baa68c6cc1037c10\"\u003e\u003ccode\u003e319be50\u003c/code\u003e\u003c/a\u003e ✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/66a90f6ee9c0cf58ec61b14f8925344d6f16eae5\"\u003e\u003ccode\u003e66a90f6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d30a3ebfc7d7fd7851ba4243677266c53cb9f154\"\u003e\u003ccode\u003ed30a3eb\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15909\"\u003e#15909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/122f1b58f4e0fabfefef3710a8c8247bb2bd820b\"\u003e\u003ccode\u003e122f1b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd6ece32eeb27c9ce164bd9170f9d8e1db1dacff\"\u003e\u003ccode\u003efd6ece3\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI GitHub topic repositories (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15906\"\u003e#15906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ec2a6adaf14c440bdcd0fd3f4ca203daa8c3ba6a\"\u003e\u003ccode\u003eec2a6ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9d7d7febd3a66844f948254c1ba4745b6cc16f40\"\u003e\u003ccode\u003e9d7d7fe\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for fr (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15897\"\u003e#15897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8dc852df4713efa998d126c5194302e9f06e7675\"\u003e\u003ccode\u003e8dc852d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.1...0.139.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.42.0 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\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/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.49.0\"\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.48 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `alembic` from 1.14.0 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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 `pydantic` from 2.12.5 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.13.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\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/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.5 to 49.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e49.0.0 - 2026-06-12\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for ``x86_64`` macOS has been removed.\n  We now only publish ``arm64`` wheels for macOS.\n* **BACKWARDS INCOMPATIBLE:** Support for 32-bit Windows has been removed.\n  Users should move to a 64-bit Python installation.\n* **BACKWARDS INCOMPATIBLE:** Removed the deprecated\n  ``PUBLIC_KEY_TYPES``, ``PRIVATE_KEY_TYPES``,\n  ``CERTIFICATE_PRIVATE_KEY_TYPES``, ``CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES``,\n  and ``CERTIFICATE_PUBLIC_KEY_TYPES`` type aliases. Use\n  ``PublicKeyTypes``, ``PrivateKeyTypes``, ``CertificateIssuerPrivateKeyTypes``,\n  ``CertificateIssuerPublicKeyTypes``, and ``CertificatePublicKeyTypes``\n  instead. These were deprecated in version 40.0.\n* **BACKWARDS INCOMPATIBLE:** :class:`~cryptography.hazmat.primitives.ciphers.algorithms.ChaCha20`\n  now treats the first 4 bytes of the ``nonce`` as a 32-bit little-endian block\n  counter (as defined in :rfc:`7539`) and tracks the number of bytes processed.\n  Attempting to encrypt or decrypt more data than the counter allows before it\n  would overflow now raises a :class:`ValueError` rather than silently diverging\n  from RFC 7539. Setting the counter portion of the ``nonce`` to zero allows\n  encrypting up to 256 GiB with a given nonce.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 certificate whose ECDSA or DSA\n  signature ``AlgorithmIdentifier`` contains encoded NULL parameters now raises\n  a :class:`ValueError`. Such certificates are invalid, but older versions of\n  Java emitted them; previously they loaded with a deprecation warning.\n* Fixed cross-compilation of the CFFI bindings when ``PYO3_CROSS_LIB_DIR``\n  is set. The build now derives the Python include directory from\n  ``PYO3_CROSS_LIB_DIR`` instead of querying the host interpreter, which\n  previously caused the build to fail during cross-compilations for embedded\n  systems, on hosts which have same-version Python development headers\n  installed as the target Python.\n* Added support for signing and verifying X.509 certificates, certificate\n  signing requests, and certificate revocation lists with\n  :doc:`/hazmat/primitives/asymmetric/mldsa` keys, as well as loading\n  certificates that contain ML-DSA public keys.\n* Added :meth:`~cryptography.hazmat.primitives.hpke.KEM.enc_length` to\n  :class:`~cryptography.hazmat.primitives.hpke.KEM` so callers can split the\n  encapsulated key from the ciphertext returned by\n  :meth:`~cryptography.hazmat.primitives.hpke.Suite.encrypt`.\n* :meth:`~cryptography.x509.verification.ExtensionPolicy.require_present`,\n  :meth:`~cryptography.x509.verification.ExtensionPolicy.may_be_present`, and\n  :meth:`~cryptography.x509.verification.ExtensionPolicy.require_not_present`\n  now accept any extension type. Previously only a fixed set of extension\n  types was supported, which made it impossible to account for otherwise\n  unrecognized critical extensions during path validation.\n* Added support for using :class:`~cryptography.x509.Certificate`,\n  :class:`~cryptography.x509.CertificateSigningRequest`, and\n  :class:`~cryptography.x509.CertificateRevocationList` as field types in\n  :doc:`/hazmat/asn1/index` structures.\n* Added :func:`~cryptography.hazmat.asn1.value_set`, a class decorator that\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e300bbe2f1bec75e5ee7e0ab7b196958831b3db6\"\u003e\u003ccode\u003ee300bbe\u003c/code\u003e\u003c/a\u003e bump version and changelog for 49.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15030\"\u003e#15030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/fa74cd8031b263edb50307f6d5a9a70df9f0a541\"\u003e\u003ccode\u003efa74cd8\u003c/code\u003e\u003c/a\u003e Add external mu (message representative) support for ML-DSA (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14979\"\u003e#14979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/f594db3f315e621473c58721961f502ba2a286ec\"\u003e\u003ccode\u003ef594db3\u003c/code\u003e\u003c/a\u003e chore(deps): bump openssl from 0.10.80 to 0.10.81 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15029\"\u003e#15029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/608e0119532153336310e51747724c6b9d107df7\"\u003e\u003ccode\u003e608e011\u003c/code\u003e\u003c/a\u003e chore(deps): bump openssl-sys from 0.9.116 to 0.9.117 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15028\"\u003e#15028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/a322bc4fb2bd2fd6f345fdb155cac226b1770dad\"\u003e\u003ccode\u003ea322bc4\u003c/code\u003e\u003c/a\u003e chore(deps): bump cc from 1.2.63 to 1.2.64 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15027\"\u003e#15027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/33181a74d41aa859b05f3720700a31c8e5b9e54c\"\u003e\u003ccode\u003e33181a7\u003c/code\u003e\u003c/a\u003e Reject critical nameConstraints extensions containing directoryName constrain...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/6080dc7f08e7473544b07df95833ff2ee843266e\"\u003e\u003ccode\u003e6080dc7\u003c/code\u003e\u003c/a\u003e Bump dependencies that dependabot isn't (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15026\"\u003e#15026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/121faa33a717559a8b0f0180b2d4e7785234af79\"\u003e\u003ccode\u003e121faa3\u003c/code\u003e\u003c/a\u003e chore(deps): bump virtualenv from 21.4.2 to 21.4.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15023\"\u003e#15023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/829520baa909eff95d64e5ebd165544d6fd60172\"\u003e\u003ccode\u003e829520b\u003c/code\u003e\u003c/a\u003e Add more robust processing for DH parameters. (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15016\"\u003e#15016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0f0500141cec535846f36c4c68d02b03126386b5\"\u003e\u003ccode\u003e0f05001\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15025\"\u003e#15025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.5...49.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.27.2 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\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/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\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/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.2...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typer` from 0.24.1 to 0.26.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/typer/releases\"\u003etyper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.26.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Make second column of Rich help output reflect the type consistently, even when using \u003ccode\u003emetavar\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1410\"\u003e#1410\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix formatting in \u003ccode\u003eNoSuchOption.format_message()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1843\"\u003e#1843\u003c/a\u003e by \u003ca href=\"https://github.com/foomunleong\"\u003e\u003ccode\u003e@​foomunleong\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1850\"\u003e#1850\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix formatting for help link to support GitHub-specific overview edge-case. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1826\"\u003e#1826\u003c/a\u003e by \u003ca href=\"https://github.com/phalberg\"\u003e\u003ccode\u003e@​phalberg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1858\"\u003e#1858\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1857\"\u003e#1857\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1856\"\u003e#1856\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1854\"\u003e#1854\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Group Dependabot updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1853\"\u003e#1853\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update Dependabot ecosystem coverage. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1851\"\u003e#1851\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1848\"\u003e#1848\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.7 to 48.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1841\"\u003e#1841\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.13.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1839\"\u003e#1839\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1828\"\u003e#1828\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1829\"\u003e#1829\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]...\n\n_Description has been truncated_","html_url":"https://github.com/zak-li/Pxtly/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/zak-li%2FPxtly/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"4806101689","node_id":"PR_kwDOOX4WR87tt9RJ","number":174,"state":"closed","title":"Bump the all-dependencies group in /backend with 5 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-07-03T20:21:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-03T20:18:24.000Z","updated_at":"2026-07-03T20:21:39.000Z","time_to_close":193,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":5,"packages":[{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"greenlet","old_version":"3.5.0","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the all-dependencies group in /backend with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.20` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.0` | `3.5.3` |\n\nUpdates `pytest` from 9.0.3 to 9.1.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/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.1 (2026-06-19)\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/14220\"\u003e#14220\u003c/a\u003e: Fixed a logic bug in \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e which would might cause it to display incorrect \u0026quot;It matches \u003c!-- raw HTML omitted --\u003eFooError()\u003c!-- raw HTML omitted --\u003e which was paired with \u003c!-- raw HTML omitted --\u003eBarError\u003c!-- raw HTML omitted --\u003e\u0026quot; messages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14591\"\u003e#14591\u003c/a\u003e: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect \u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pytest\"\u003e\u003ccode\u003e@​pytest\u003c/code\u003e\u003c/a\u003e.mark.parametrize\u003c!-- raw HTML omitted --\u003e to fail with \u0026quot;duplicate parametrization of '\u0026lt;fixture name\u0026gt;'\u0026quot;.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14606\"\u003e#14606\u003c/a\u003e: Fixed \u003ccode\u003elist-item\u003c/code\u003e typing errors from mypy in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e \u003ccode\u003eargvalues\u003c/code\u003e parameter.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14608\"\u003e#14608\u003c/a\u003e: Fixed a regression in pytest 9.1.0 where \u003ccode\u003econftest.py\u003c/code\u003e files located in \u003ccode\u003e\u0026lt;invocation dir\u0026gt;/test*\u003c/code\u003e were no longer loaded as initial conftests when invoked without arguments.\nThis could cause certain hooks (like \u003ccode\u003epytest_addoption\u003c/code\u003e) in these files to not fire.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.1.0\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.0 (2026-06-13)\u003c/h1\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14533\"\u003e#14533\u003c/a\u003e: When using \u003ccode\u003e--doctest-modules\u003c/code\u003e, autouse fixtures with \u003ccode\u003emodule\u003c/code\u003e, \u003ccode\u003epackage\u003c/code\u003e or \u003ccode\u003esession\u003c/code\u003e scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.\u003c/p\u003e\n\u003cp\u003eIf this is undesirable, move the fixture definition to a \u003ccode\u003econftest.py\u003c/code\u003e file if possible.\u003c/p\u003e\n\u003cp\u003eTechnical explanation for those interested:\nWhen using \u003c!-- raw HTML omitted --\u003e--doctest-modules\u003c!-- raw HTML omitted --\u003e, pytest possibly collects Python modules twice, once as \u003ccode\u003epytest.Module\u003c/code\u003e and once as a \u003ccode\u003eDoctestModule\u003c/code\u003e (depending on the configuration).\nDue to improvements in pytest's fixture implementation, if e.g. the \u003ccode\u003eDoctestModule\u003c/code\u003e collects a fixture, it is now visible to it only, and not to the \u003ccode\u003eModule\u003c/code\u003e.\nThis means that both need to register the fixtures independently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations (removal in next major release)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10819\"\u003e#10819\u003c/a\u003e: Added a deprecation warning for class-scoped fixtures defined as instance methods (without \u003ccode\u003e@classmethod\u003c/code\u003e). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use \u003ccode\u003e@classmethod\u003c/code\u003e decorator instead -- by \u003ccode\u003eyastcher\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003e10819\u003c/code\u003e and \u003ccode\u003e14011\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12882\"\u003e#12882\u003c/a\u003e: Calling \u003ccode\u003erequest.getfixturevalue() \u0026lt;pytest.FixtureRequest.getfixturevalue\u0026gt;\u003c/code\u003e during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003edynamic-fixture-request-during-teardown\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13409\"\u003e#13409\u003c/a\u003e: Using non-\u003ccode\u003e~collections.abc.Collection\u003c/code\u003e iterables (such as generators, iterators, or custom iterable objects) for the \u003ccode\u003eargvalues\u003c/code\u003e parameter in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e and \u003ccode\u003emetafunc.parametrize \u0026lt;pytest.Metafunc.parametrize\u0026gt;\u003c/code\u003e is now deprecated.\u003c/p\u003e\n\u003cp\u003eThese iterables get exhausted after the first iteration,\nleading to tests getting unexpectedly skipped in cases such as running \u003ccode\u003epytest.main()\u003c/code\u003e multiple times,\nusing class-level parametrize decorators,\nor collecting tests multiple times.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003eparametrize-iterators\u003c/code\u003e for details and suggestions.\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 is now deprecated.\nUse \u003ccode\u003econfig.getini() \u0026lt;pytest.Config.getini\u0026gt;\u003c/code\u003e to access configuration values instead.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003econfig-inicfg\u003c/code\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14004\"\u003e#14004\u003c/a\u003e: Passing \u003ccode\u003ebaseid\u003c/code\u003e to \u003ccode\u003e~pytest.FixtureDef\u003c/code\u003e or \u003ccode\u003enodeid\u003c/code\u003e strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447\"\u003e\u003ccode\u003ecf470ec\u003c/code\u003e\u003c/a\u003e Prepare release version 9.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690\"\u003e\u003ccode\u003ee0c8ce6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14625\"\u003e#14625\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/a07c31a97...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757\"\u003e\u003ccode\u003e1b82d16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14624\"\u003e#14624\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/b375b79ec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53\"\u003e\u003ccode\u003e501c4bc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14596\"\u003e#14596\u003c/a\u003e from bluetech/doc-classmethod\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca\"\u003e\u003ccode\u003eb61f588\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14622\"\u003e#14622\u003c/a\u003e from chrisburr/fix-14608-initial-conftest-test-subdir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a\"\u003e\u003ccode\u003e9a567e0\u003c/code\u003e\u003c/a\u003e [automated] Update plugin list (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14617\"\u003e#14617\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14618\"\u003e#14618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384\"\u003e\u003ccode\u003eef8b299\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14620\"\u003e#14620\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/680f9f3ed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc\"\u003e\u003ccode\u003e66abd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e from bysiber/fix-stale-iexp-raisesgroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5\"\u003e\u003ccode\u003e79fbf93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14612\"\u003e#14612\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/974ed48b6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c\"\u003e\u003ccode\u003e0d312eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14611\"\u003e#14611\u003c/a\u003e from bluetech/parametrize-argvalues-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.3...9.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.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.20\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.15.20\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25887\"\u003e#25887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a warning instead of an error for unknown rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26113\"\u003e#26113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003enoqa\u003c/code\u003e shebang handling in \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26286\"\u003e#26286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26240\"\u003e#26240\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26371\"\u003e#26371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd versioning sections to custom crate READMEs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26317\"\u003e#26317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eruff_python_parser\u003c/code\u003e README for crates.io (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26315\"\u003e#26315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Clarify that \u003ccode\u003ePERF402\u003c/code\u003e applies to any iterable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26242\"\u003e#26242\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/dhruvmanila\"\u003e\u003ccode\u003e@​dhruvmanila\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\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/trilamsr\"\u003e\u003ccode\u003e@​trilamsr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.20\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.20\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-pc-windows-msvc.zip\"\u003eruff-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-unknown-linux-gnu.tar.gz\"\u003eruff-aarch64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-unknown-linux-gnu.tar.gz\"\u003eruff-i686-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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.15.20\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25887\"\u003e#25887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a warning instead of an error for unknown rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26113\"\u003e#26113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003enoqa\u003c/code\u003e shebang handling in \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26286\"\u003e#26286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26240\"\u003e#26240\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26371\"\u003e#26371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd versioning sections to custom crate READMEs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26317\"\u003e#26317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eruff_python_parser\u003c/code\u003e README for crates.io (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26315\"\u003e#26315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Clarify that \u003ccode\u003ePERF402\u003c/code\u003e applies to any iterable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26242\"\u003e#26242\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/dhruvmanila\"\u003e\u003ccode\u003e@​dhruvmanila\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\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/trilamsr\"\u003e\u003ccode\u003e@​trilamsr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.19\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-23.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport human-readable names when hovering suppression comments and in code actions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26114\"\u003e#26114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFall back to default settings when editor-only settings are invalid (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26244\"\u003e#26244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when inserting text at a notebook cell boundary (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26111\"\u003e#26111\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Update fix suggestions for \u003ccode\u003e__floor__\u003c/code\u003e, \u003ccode\u003e__trunc__\u003c/code\u003e, \u003ccode\u003e__length_hint__\u003c/code\u003e, and \u003ccode\u003e__matmul__\u003c/code\u003e variants (\u003ccode\u003ePLC2801\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26239\"\u003e#26239\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid allocating when parsing single string literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26200\"\u003e#26200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid reallocating singleton call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26223\"\u003e#26223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily create source files for lint diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26226\"\u003e#26226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize formatter text width and indentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26236\"\u003e#26236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReserve capacity for builtin bindings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26229\"\u003e#26229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip repeated-key checks for singleton dictionaries (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26228\"\u003e#26228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse ArrayVec for qualified name segments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26224\"\u003e#26224\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/f82a36b6baf8c0547a17bbde6c0d927ccd45d938\"\u003e\u003ccode\u003ef82a36b\u003c/code\u003e\u003c/a\u003e Bump 0.15.20 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26376\"\u003e#26376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/af329438b55d5aa8ca28725f17abbae63b5c815d\"\u003e\u003ccode\u003eaf32943\u003c/code\u003e\u003c/a\u003e Improve the summarise-ecosystem-results skill (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26378\"\u003e#26378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/485ebab5de692aad34720898cd80245b6092ba86\"\u003e\u003ccode\u003e485ebab\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eRUF076\u003c/code\u003e name from schema (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26371\"\u003e#26371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef81835ce3da615346584dc446de0fe26bfc154b\"\u003e\u003ccode\u003eef81835\u003c/code\u003e\u003c/a\u003e [ty] Implement rust-analyzer's \u0026quot;Click for full compiler diagnostic\u0026quot; feature (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/572b31e2377a701a7365f069f6ef87002962cb2b\"\u003e\u003ccode\u003e572b31e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26240\"\u003e#26240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f703f219d7fddd1a4abba9fa81e34773c185a4b9\"\u003e\u003ccode\u003ef703f21\u003c/code\u003e\u003c/a\u003e Allow human-readable names in rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25887\"\u003e#25887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0d726b28ee35413926145ffef4ac1143cae9ea1e\"\u003e\u003ccode\u003e0d726b2\u003c/code\u003e\u003c/a\u003e [ty] Reuse equality semantics for membership compatibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25955\"\u003e#25955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dbe6e9848c3f78fdaf543cfc000939ebc73b5f00\"\u003e\u003ccode\u003edbe6e98\u003c/code\u003e\u003c/a\u003e [ty] Infer definite equality comparison results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26337\"\u003e#26337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e700ea357a2196d76b58eb89b2031ddb5ca896e0\"\u003e\u003ccode\u003ee700ea3\u003c/code\u003e\u003c/a\u003e [ty] Prove TypedDict structural patterns exhaustive (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26285\"\u003e#26285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6a0d2ec93959d966430b8c39d4de5c3e8a88e911\"\u003e\u003ccode\u003e6a0d2ec\u003c/code\u003e\u003c/a\u003e [ty] Widen inferred class-valued instance attributes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26338\"\u003e#26338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.20\"\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.49 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `greenlet` from 3.5.0 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.0...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nobuddyorg/ProcrastinationBuddy/pull/174","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FProcrastinationBuddy/issues/174","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/174/packages"},{"uuid":"4801945536","node_id":"PR_kwDOR335Os7tgbcc","number":59,"state":"closed","title":"Bump the pip-minor-patch group across 1 directory with 37 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-03T10:38:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-03T08:47:45.000Z","updated_at":"2026-07-03T10:38:43.000Z","time_to_close":6656,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-minor-patch","update_count":37,"packages":[{"name":"alembic","old_version":"1.14.1","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.13.0","new_version":"4.14.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"click","old_version":"8.3.1","new_version":"8.4.2","repository_url":"https://github.com/pallets/click"},{"name":"croniter","old_version":"6.2.2","new_version":"6.2.3","repository_url":"https://github.com/pallets-eco/croniter"},{"name":"fastapi","old_version":"0.135.3","new_version":"0.139.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cli","old_version":"0.0.24","new_version":"0.0.27","repository_url":"https://github.com/fastapi/fastapi-cli"},{"name":"fastapi-cloud-cli","old_version":"0.15.1","new_version":"0.22.1","repository_url":"https://github.com/fastapilabs/fastapi-cloud-cli"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"griffelib","old_version":"2.0.2","new_version":"2.1.0"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.11","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"jiter","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"mako","old_version":"1.3.10","new_version":"1.3.12","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"mcp","old_version":"1.27.1","new_version":"1.28.1","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"openai","old_version":"2.36.0","new_version":"2.44.0","repository_url":"https://github.com/openai/openai-python"},{"name":"openai-agents","old_version":"0.17.4","new_version":"0.17.7","repository_url":"https://github.com/openai/openai-agents-python"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pyjwt","old_version":"2.12.1","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyotp","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pyauth/pyotp"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"redis","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/redis/redis-py"},{"name":"rich-toolkit","old_version":"0.20.0","new_version":"0.20.1"},{"name":"rpds-py","old_version":"2026.5.1","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"rq","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/rq/rq"},{"name":"sentry-sdk","old_version":"2.57.0","new_version":"2.64.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sse-starlette","old_version":"3.4.4","new_version":"3.4.5","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.0.0","new_version":"1.3.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.67.3","new_version":"4.68.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.26.7","new_version":"0.26.8","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 37 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.14.1` | `1.18.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.1` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.4.2` |\n| [croniter](https://github.com/pallets-eco/croniter) | `6.2.2` | `6.2.3` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.139.0` |\n| [fastapi-cli](https://github.com/fastapi/fastapi-cli) | `0.0.24` | `0.0.27` |\n| [fastapi-cloud-cli](https://github.com/fastapilabs/fastapi-cloud-cli) | `0.15.1` | `0.22.1` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.3` |\n| griffelib | `2.0.2` | `2.1.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.18` |\n| [jiter](https://github.com/pydantic/jiter) | `0.14.0` | `0.16.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.10` | `1.3.12` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.1` | `1.28.1` |\n| [openai](https://github.com/openai/openai-python) | `2.36.0` | `2.44.0` |\n| [openai-agents](https://github.com/openai/openai-agents-python) | `0.17.4` | `0.17.7` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.1` | `2.14.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.47.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.1` | `2.13.0` |\n| [pyotp](https://github.com/pyauth/pyotp) | `2.9.0` | `2.10.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.32` |\n| [redis](https://github.com/redis/redis-py) | `8.0.0` | `8.0.1` |\n| rich-toolkit | `0.20.0` | `0.20.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.5.1` | `2026.6.3` |\n| [rq](https://github.com/rq/rq) | `2.9.0` | `2.10.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.57.0` | `2.64.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.51` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.4` | `3.4.5` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.0` | `1.3.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.3` | `4.68.3` |\n| [typer](https://github.com/fastapi/typer) | `0.26.7` | `0.26.8` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.42.0` | `0.49.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n\n\nUpdates `alembic` from 1.14.1 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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.13.0 to 4.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CapacityLimiter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Condition\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Event\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Lock\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.ResourceGuard\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Semaphore\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed cancellation exception escaping a cancel scope when triggered via \u003ccode\u003echeck_cancelled()\u003c/code\u003e in a worker thread (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1113\"\u003e#1113\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eTaskGroup\u003c/code\u003e raising \u003ccode\u003eAttributeError\u003c/code\u003e instead of a clear error when entered more than once (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1109\"\u003e#1109\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bahtya\"\u003e\u003ccode\u003e@​bahtya\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/149b9e907618fadf6840a4d3cebad533b0c7d033\"\u003e\u003ccode\u003e149b9e9\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/377518cd1160314f2fdf74f356ae9e848c94a065\"\u003e\u003ccode\u003e377518c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6 to 7 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b42a2f5e8e9910d0c57b970f9a747427a9da26f0\"\u003e\u003ccode\u003eb42a2f5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1185\"\u003e#1185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3ceb6ffbfa89be715f444550883356fbfbc13154\"\u003e\u003ccode\u003e3ceb6ff\u003c/code\u003e\u003c/a\u003e Allow 0 tokens in a CapacityLimiter instantiated outside an event loop (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e10d1db74f7a59cb283a1e4b3b22227da11c6f07\"\u003e\u003ccode\u003ee10d1db\u003c/code\u003e\u003c/a\u003e Add missing await to open_file() in file I/O concurrency example (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1dbc3b62256e5877bcf610aca98ba6e450d14c20\"\u003e\u003ccode\u003e1dbc3b6\u003c/code\u003e\u003c/a\u003e OutcomeException should not discard test runner_task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1180\"\u003e#1180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62\"\u003e\u003ccode\u003effe9133\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8\"\u003e\u003ccode\u003ef8b9f01\u003c/code\u003e\u003c/a\u003e Fixed asyncio lock waiter deadlocks after cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1145\"\u003e#1145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de\"\u003e\u003ccode\u003ed517ee1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49\"\u003e\u003ccode\u003e550b68e\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eanyio.run\u003c/code\u003e support \u003ccode\u003eAwaitable\u003c/code\u003e at runtime on all backends (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.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/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.2/\"\u003ehttps://pypi.org/project/click/8.4.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/34\"\u003ehttps://github.com/pallets/click/milestone/34\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by \u003ca href=\"https://redirect.github.com/pallets/click/issues/3126\"\u003e#3126\u003c/a\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3502\"\u003e#3502\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3043\"\u003e#3043\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3504\"\u003e#3504\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3508\"\u003e#3508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3509\"\u003e#3509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3059\"\u003e#3059\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3507\"\u003e#3507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3242\"\u003e#3242\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2542\"\u003e#2542\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3534\"\u003e#3534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from \u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3533\"\u003e#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2331\"\u003e#2331\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1884\"\u003e#1884\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3125\"\u003e#3125\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32\"\u003ehttps://github.com/pallets/click/milestone/32\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-06-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by {pr}\u003ccode\u003e3126\u003c/code\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. {issue}\u003ccode\u003e3502\u003c/code\u003e\n{issue}\u003ccode\u003e3043\u003c/code\u003e {pr}\u003ccode\u003e3504\u003c/code\u003e {pr}\u003ccode\u003e3508\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. {pr}\u003ccode\u003e3509\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n{issue}\u003ccode\u003e3059\u003c/code\u003e {pr}\u003ccode\u003e3507\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. {issue}\u003ccode\u003e3242\u003c/code\u003e {issue}\u003ccode\u003e2542\u003c/code\u003e {pr}\u003ccode\u003e3534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from {pr}\u003ccode\u003e3482\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e\n{pr}\u003ccode\u003e3533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. {pr}\u003ccode\u003e3578\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. {issue}\u003ccode\u003e2331\u003c/code\u003e {issue}\u003ccode\u003e1884\u003c/code\u003e {issue}\u003ccode\u003e3125\u003c/code\u003e {pr}\u003ccode\u003e3582\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. {issue}\u003ccode\u003e3458\u003c/code\u003e {pr}\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. {issue}\u003ccode\u003e3277\u003c/code\u003e {pr}\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eEnum\u003c/code\u003e values used as \u003ccode\u003eChoice\u003c/code\u003e options produces a\nvalid completion result. {issue}\u003ccode\u003e3015\u003c/code\u003e {pr}\u003ccode\u003e3471\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. {issue}\u003ccode\u003e3487\u003c/code\u003e {pr}\u003ccode\u003e3493\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e {pr}\u003ccode\u003e3482\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eopen_url\u003c/code\u003e on Windows when the file path contains spaces.\n{issue}\u003ccode\u003e2994\u003c/code\u003e {pr}\u003ccode\u003e3478\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e typing improvements. {pr}\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\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/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53\"\u003e\u003ccode\u003eb2e30a1\u003c/code\u003e\u003c/a\u003e Release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49\"\u003e\u003ccode\u003e7a16b20\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when module differs from distribution name (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc\"\u003e\u003ccode\u003ebec5928\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when top-level module differs from distribution...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd\"\u003e\u003ccode\u003e916883a\u003c/code\u003e\u003c/a\u003e Fix tests to not rely on \u003ccode\u003e-Wdefault\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3591\"\u003e#3591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520\"\u003e\u003ccode\u003e09195f6\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02\"\u003e\u003ccode\u003e1557e26\u003c/code\u003e\u003c/a\u003e Check for warning exception with idiomatic context manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3\"\u003e\u003ccode\u003ed9ff133\u003c/code\u003e\u003c/a\u003e Static typing improvements in \u003ccode\u003eclick.shell_completion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3460\"\u003e#3460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793\"\u003e\u003ccode\u003e762c97e\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581\"\u003e\u003ccode\u003e8929d39\u003c/code\u003e\u003c/a\u003e Convert changes to markdown. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd\"\u003e\u003ccode\u003e237be50\u003c/code\u003e\u003c/a\u003e Move changes headings down a level.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.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 `croniter` from 6.2.2 to 6.2.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/croniter/blob/main/CHANGELOG.rst\"\u003ecroniter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.2.3 (2026-07-02)\u003c/h2\u003e\n\u003cp\u003eFeatures and Improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Fix quadratic expansion of comma-separated range lists for a large speed-up on expressions with many ranges. [1d79fc6, [#231](https://github.com/pallets-eco/croniter/issues/231), @alhudz]\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Reject a zero step (e.g. ``5-5/0``) in equal and reversed cron ranges instead of silently accepting it. [ab27767, [#232](https://github.com/pallets-eco/croniter/issues/232), @alhudz]\n- Fix ``expand_from_start_time`` month low-bound off-by-one so stepped month ranges start on the correct month. [f329964, [#235](https://github.com/pallets-eco/croniter/issues/235), @alhudz]\n\nPackaging\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eFix zizmor-reported security findings in GitHub Actions workflows. [ed19f94, \u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/230\"\u003e#230\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eBump pinned build and CI dependencies via dependabot.\u003c/li\u003e\n\u003cli\u003eUpgrade locked development and build dependencies (\u003ccode\u003euv lock --upgrade\u003c/code\u003e).\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/22b59e05f5ca485c45596b2a9b580fddffbf753f\"\u003e\u003ccode\u003e22b59e0\u003c/code\u003e\u003c/a\u003e Prepare for release 6.2.3 (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/236\"\u003e#236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/ab277671adc8e446e8dc7f1e939eabf024b6199e\"\u003e\u003ccode\u003eab27767\u003c/code\u003e\u003c/a\u003e reject zero step in equal and reversed cron ranges (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/f329964223eeb29e7788b1a9d615b525148fec96\"\u003e\u003ccode\u003ef329964\u003c/code\u003e\u003c/a\u003e fix expand_from_start_time month low bound off-by-one (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/235\"\u003e#235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/9810279c20030954e2f1ed2cf5f1d34b98c6b07f\"\u003e\u003ccode\u003e9810279\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/d051aaf6342fbe9c559b9fcd99e6fb6f3bb63cb7\"\u003e\u003ccode\u003ed051aaf\u003c/code\u003e\u003c/a\u003e Bump hatchling from 1.29.0 to 1.30.1 in the pip-dependencies group (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/234\"\u003e#234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/1d79fc6555fb9208e290e0af10194eec638ae01c\"\u003e\u003ccode\u003e1d79fc6\u003c/code\u003e\u003c/a\u003e fix quadratic expansion of comma-separated range lists (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/231\"\u003e#231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/ed19f94c472ef665598693a554e6a5555be41f7b\"\u003e\u003ccode\u003eed19f94\u003c/code\u003e\u003c/a\u003e Fix zizmor-reported security findings in GitHub Actions workflows (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/230\"\u003e#230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/82657c37b873319570fee74c1864cb4d6153f543\"\u003e\u003ccode\u003e82657c3\u003c/code\u003e\u003c/a\u003e Bump trove-classifiers in the pip-dependencies group (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/229\"\u003e#229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/8e13827f77358beabf75245ad37d31a581cb6d1e\"\u003e\u003ccode\u003e8e13827\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/e55d70bf2288e25c1ddf850fde703d56888772f2\"\u003e\u003ccode\u003ee55d70b\u003c/code\u003e\u003c/a\u003e Bump trove-classifiers in the pip-dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/croniter/compare/6.2.2...6.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.135.3 to 0.139.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.139.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authentication for the frontend. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15908\"\u003e#15908\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15897\"\u003e#15897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15895\"\u003e#15895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15896\"\u003e#15896\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15899\"\u003e#15899\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15892\"\u003e#15892\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15891\"\u003e#15891\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15893\"\u003e#15893\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15898\"\u003e#15898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15900\"\u003e#15900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15890\"\u003e#15890\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15894\"\u003e#15894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15888\"\u003e#15888\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15880\"\u003e#15880\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15889\"\u003e#15889\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15883\"\u003e#15883\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15885\"\u003e#15885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15882\"\u003e#15882\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15887\"\u003e#15887\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15886\"\u003e#15886\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15881\"\u003e#15881\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15884\"\u003e#15884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15879\"\u003e#15879\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15909\"\u003e#15909\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15906\"\u003e#15906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15878\"\u003e#15878\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Remove not needed \u003ccode\u003eallow-unsafe-pr-checkout: true\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15876\"\u003e#15876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15872\"\u003e#15872\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 10 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15870\"\u003e#15870\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15826\"\u003e#15826\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cecd96d9c6c318e0df1c40cedbc2e953381ddfd3\"\u003e\u003ccode\u003ececd96d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.139.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15910\"\u003e#15910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aea660936b55fdbd84270d24f892839388922dd6\"\u003e\u003ccode\u003eaea6609\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/319be508ce7db9ee5f52c3b9baa68c6cc1037c10\"\u003e\u003ccode\u003e319be50\u003c/code\u003e\u003c/a\u003e ✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/66a90f6ee9c0cf58ec61b14f8925344d6f16eae5\"\u003e\u003ccode\u003e66a90f6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d30a3ebfc7d7fd7851ba4243677266c53cb9f154\"\u003e\u003ccode\u003ed30a3eb\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15909\"\u003e#15909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/122f1b58f4e0fabfefef3710a8c8247bb2bd820b\"\u003e\u003ccode\u003e122f1b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd6ece32eeb27c9ce164bd9170f9d8e1db1dacff\"\u003e\u003ccode\u003efd6ece3\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI GitHub topic repositories (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15906\"\u003e#15906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ec2a6adaf14c440bdcd0fd3f4ca203daa8c3ba6a\"\u003e\u003ccode\u003eec2a6ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9d7d7febd3a66844f948254c1ba4745b6cc16f40\"\u003e\u003ccode\u003e9d7d7fe\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for fr (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15897\"\u003e#15897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8dc852df4713efa998d126c5194302e9f06e7675\"\u003e\u003ccode\u003e8dc852d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.3...0.139.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-cli` from 0.0.24 to 0.0.27\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi-cli/releases\"\u003efastapi-cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.27\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eFASTAPI_PUBLIC_URL\u003c/code\u003e env var to configure app's public URL that is shown on startup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/381\"\u003e#381\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.26\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show tip on how to configure \u003ccode\u003eentrypoint\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/389\"\u003e#389\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.25\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show import string source. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/388\"\u003e#388\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Include the version of \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e to the output of \u003ccode\u003e--version\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/341\"\u003e#341\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs about contributing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/410\"\u003e#410\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/408\"\u003e#408\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/418\"\u003e#418\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.26.2 to 0.26.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/427\"\u003e#427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump fastapi-cloud-cli from 0.17.1 to 0.19.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/429\"\u003e#429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.9 to 0.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/428\"\u003e#428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/430\"\u003e#430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/426\"\u003e#426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump eps1lon/actions-label-merge-conflict from 3.0.3 to 3.1.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/425\"\u003e#425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.25.1 to 0.26.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/424\"\u003e#424\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/420\"\u003e#420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove old package stub slim, not user nor needed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/419\"\u003e#419\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/414\"\u003e#414\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/407\"\u003e#407\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/413\"\u003e#413\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/404\"\u003e#404\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/403\"\u003e#403\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump uvicorn from 0.44.0 to 0.46.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/400\"\u003e#400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.7 to 0.19.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/399\"\u003e#399\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 2.0.0 to 2.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/397\"\u003e#397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/373\"\u003e#373\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.34 to 0.0.35. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/396\"\u003e#396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/392\"\u003e#392\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/393\"\u003e#393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/394\"\u003e#394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.20.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/395\"\u003e#395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/391\"\u003e#391\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.25.0 to 0.25.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/390\"\u003e#390\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.32 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/387\"\u003e#387\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi-cli/blob/main/release-notes.md\"\u003efastapi-cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.27 (2026-06-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eFASTAPI_PUBLIC_URL\u003c/code\u003e env var to configure app's public URL that is shown on startup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/381\"\u003e#381\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.26 (2026-06-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show tip on how to configure \u003ccode\u003eentrypoint\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/389\"\u003e#389\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.25 (2026-06-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show import string source. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/388\"\u003e#388\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Include the version of \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e to the output of \u003ccode\u003e--version\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/341\"\u003e#341\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs about contributing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/410\"\u003e#410\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/408\"\u003e#408\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/418\"\u003e#418\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.26.2 to 0.26.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/427\"\u003e#427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump fastapi-cloud-cli from 0.17.1 to 0.19.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/429\"\u003e#429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.9 to 0.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/428\"\u003e#428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/430\"\u003e#430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/426\"\u003e#426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump eps1lon/actions-label-merge-conflict from 3.0.3 to 3.1.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/425\"\u003e#425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.25.1 to 0.26.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/424\"\u003e#424\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/420\"\u003e#420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove old package stub slim, not user nor needed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/419\"\u003e#419\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/414\"\u003e#414\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/407\"\u003e#407\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/413\"\u003e#413\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/404\"\u003e#404\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/403\"\u003e#403\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump uvicorn from 0.44.0 to 0.46.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/400\"\u003e#400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.7 to 0.19.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/399\"\u003e#399\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 2.0.0 to 2.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/397\"\u003e#397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/373\"\u003e#373\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.34 to 0.0.35. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/396\"\u003e#396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/392\"\u003e#392\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/393\"\u003e#393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/394\"\u003e#394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.20.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/395\"\u003e#395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/760451b3fbd3814902a36696959b5e49f6c80dad\"\u003e\u003ccode\u003e760451b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.27 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/e3893efbeb9d50a000ef997b7f54bc08a0f27fa2\"\u003e\u003ccode\u003ee3893ef\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/46aca093b0835b00476c7b45d408e7cbaf960980\"\u003e\u003ccode\u003e46aca09\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eFASTAPI_PUBLIC_URL\u003c/code\u003e env var to configure app's public URL that is show...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/04c12c244febb6b3939df6011b5a4bd5a7bca89c\"\u003e\u003ccode\u003e04c12c2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.26 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/96bd5ab16b7ae16bb3746c2eff2fed31e3a7bd5d\"\u003e\u003ccode\u003e96bd5ab\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/cd37a8e50f9b37a9f4571a8e6938f274a56297c9\"\u003e\u003ccode\u003ecd37a8e\u003c/code\u003e\u003c/a\u003e 🚸 Show tip on how to configure \u003ccode\u003eentrypoint\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/8c4ab6663187c5fcdb68fe523c70ff265a9c50da\"\u003e\u003ccode\u003e8c4ab66\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.25 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/b6bf5b53d87f64cad2e56541008b6f3a62305b1c\"\u003e\u003ccode\u003eb6bf5b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/572ea4c0f286c5f70d407b30d2f444e69e4c1f65\"\u003e\u003ccode\u003e572ea4c\u003c/code\u003e\u003c/a\u003e 👷 Add pre-commit hook to catch typos (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/1428d40976c1bb2585941d9961898ce6b9d0f448\"\u003e\u003ccode\u003e1428d40\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi-cli/compare/0.0.24...0.0.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-cloud-cli` from 0.15.1 to 0.22.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/releases\"\u003efastapi-cloud-cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Validate app logs tail limit before request. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/287\"\u003e#287\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.22.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add cloud apps update command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/280\"\u003e#280\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Remove \u003ccode\u003esrc\u003c/code\u003e from \u003ccode\u003edirectory\u003c/code\u003e option description and error message. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/279\"\u003e#279\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/276\"\u003e#276\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump sentry-sdk from 2.62.0 to 2.63.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/277\"\u003e#277\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 6.0.3 to 7.0.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/275\"\u003e#275\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/278\"\u003e#278\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add --json support for logout command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/269\"\u003e#269\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci setup command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/268\"\u003e#268\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci print-workflow command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/267\"\u003e#267\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens delete command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/264\"\u003e#264\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens create command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/263\"\u003e#263\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens list command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/262\"\u003e#262\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Handle invalid apps create --directory input. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/265\"\u003e#265\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Use new deployment route to fetch deployment. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/266\"\u003e#266\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Update deployment data when triggering upload complete. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/250\"\u003e#250\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Improve error messages for logs. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/249\"\u003e#249\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/260\"\u003e#260\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- 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/fastapilabs/fastapi-cloud-cli/blob/main/release-notes.md\"\u003efastapi-cloud-cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Validate app logs tail limit before request. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/287\"\u003e#287\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.22.0 (2026-06-30)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add cloud apps update command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/280\"\u003e#280\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Remove \u003ccode\u003esrc\u003c/code\u003e from \u003ccode\u003edirectory\u003c/code\u003e option description and error message. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/279\"\u003e#279\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/276\"\u003e#276\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump sentry-sdk from 2.62.0 to 2.63.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/277\"\u003e#277\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 6.0.3 to 7.0.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/275\"\u003e#275\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/278\"\u003e#278\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0 (2026-06-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add --json support for logout command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/269\"\u003e#269\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci setup command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/268\"\u003e#268\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci print-workflow command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/267\"\u003e#267\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens delete command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/264\"\u003e#264\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens create command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/263\"\u003e#263\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens list command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/262\"\u003e#262\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Handle invalid apps create --directory input. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/265\"\u003e#265\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Use new deployment route to fetch deployment. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/266\"\u003e#266\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Update deployment data when triggering upload complete. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/250\"\u003e#250\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Improve error messages for logs. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/249\"\u003e#249\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/260\"\u003e#260\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/20f9fe34e1b95fb925e168f9d030b9d52cee5f8a\"\u003e\u003ccode\u003e20f9fe3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.22.1 (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/e2b4722fc22b3c3e6c0babafa5ad21862372ff52\"\u003e\u003ccode\u003ee2b4722\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/5...\n\n_Description has been truncated_","html_url":"https://github.com/manasijatech/ananta-market-stack/pull/59","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/manasijatech%2Fananta-market-stack/issues/59","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/59/packages"},{"uuid":"4789977343","node_id":"PR_kwDOLfkiw87s5jyS","number":15093,"state":"open","title":"chore(deps): bump the version-all group across 1 directory with 28 updates","user":"dependabot[bot]","labels":["python","dependencies","type: chore"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T23:36:21.000Z","updated_at":"2026-07-01T23:36:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"version-all","update_count":28,"packages":[{"name":"authlib","old_version":"1.6.12","new_version":"1.7.2","repository_url":"https://github.com/authlib/authlib"},{"name":"cloud-sql-python-connector","old_version":"1.20.1","new_version":"1.20.3","repository_url":"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"stripe","old_version":"11.6.0","new_version":"15.3.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-keycloak","old_version":"5.12.0","new_version":"7.1.1","repository_url":"https://github.com/marcospereirampj/python-keycloak"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"resend","old_version":"2.27.0","new_version":"2.32.2","repository_url":"https://github.com/resendlabs/resend-python"},{"name":"slack-sdk","old_version":"3.41.0","new_version":"3.42.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"ddtrace","old_version":"3.13.0","new_version":"4.10.5","repository_url":"https://github.com/DataDog/dd-trace-py"},{"name":"posthog","old_version":"7.9.12","new_version":"7.20.5","repository_url":"https://github.com/posthog/posthog-python"},{"name":"coredis","old_version":"4.24.0","new_version":"5.7.0","repository_url":"https://github.com/alisaifee/coredis"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.48.0","new_version":"0.52.0","repository_url":"https://github.com/shap/shap"},{"name":"google-cloud-recaptcha-enterprise","old_version":"1.31.0","new_version":"1.32.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pandas","old_version":"2.3.3","new_version":"3.0.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mcp","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"ruff","old_version":"0.8.3","new_version":"0.15.19","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.13.0","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.1.0","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"types-requests","old_version":"2.33.0.20260402","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"reportlab","old_version":"4.4.10","new_version":"5.0.0"},{"name":"gevent","old_version":"25.9.1","new_version":"26.5.0","repository_url":"https://github.com/gevent/gevent"}],"path":null,"ecosystem":"pip"},"body":"Bumps the version-all group with 28 updates in the /enterprise directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [authlib](https://github.com/authlib/authlib) | `1.6.12` | `1.7.2` |\n| [cloud-sql-python-connector](https://github.com/GoogleCloudPlatform/cloud-sql-python-connector) | `1.20.1` | `1.20.3` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [stripe](https://github.com/stripe/stripe-python) | `11.6.0` | `15.3.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n| [python-keycloak](https://github.com/marcospereirampj/python-keycloak) | `5.12.0` | `7.1.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.51` |\n| [resend](https://github.com/resendlabs/resend-python) | `2.27.0` | `2.32.2` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.41.0` | `3.42.0` |\n| [ddtrace](https://github.com/DataDog/dd-trace-py) | `3.13.0` | `4.10.5` |\n| [posthog](https://github.com/posthog/posthog-python) | `7.9.12` | `7.20.5` |\n| [coredis](https://github.com/alisaifee/coredis) | `4.24.0` | `5.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.0` |\n| [shap](https://github.com/shap/shap) | `0.48.0` | `0.52.0` |\n| [google-cloud-recaptcha-enterprise](https://github.com/googleapis/google-cloud-python) | `1.31.0` | `1.32.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.3` | `3.0.3` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.0` | `1.28.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.8.3` | `0.15.19` |\n| [mypy](https://github.com/python/mypy) | `1.13.0` | `2.1.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.1.0` | `4.6.0` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260402` | `2.33.0.20260518` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [reportlab](https://www.reportlab.com/) | `4.4.10` | `5.0.0` |\n| [gevent](https://github.com/gevent/gevent) | `25.9.1` | `26.5.0` |\n\n\nUpdates `authlib` from 1.6.12 to 1.7.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.7.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the readme links by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/886\"\u003eauthlib/authlib#886\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow non-recommended algorithms in ClientSecretJWT and PrivateKey by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/887\"\u003eauthlib/authlib#887\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate BCP47 language tags with a regex by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/873\"\u003eauthlib/authlib#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RFC7523 signing with non RSA keys by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/884\"\u003eauthlib/authlib#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.1...v1.7.2\"\u003ehttps://github.com/authlib/authlib/compare/v1.7.1...v1.7.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.7.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix authlib.jose deprecation warning poping from _joserfc_helpers by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/881\"\u003eauthlib/authlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix redirecting to unvalidated \u003ccode\u003eredirect_uri\u003c/code\u003e on \u003ccode\u003eInvalidScopeError\u003c/code\u003e  in \u003ccode\u003eOpenIDImplicitGrant\u003c/code\u003e and \u003ccode\u003eOpenIDHybridGrant\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.0...v1.7.1\"\u003ehttps://github.com/authlib/authlib/compare/v1.7.0...v1.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.7.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAuthorization and token endpoints request empty scope parameter management by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/847\"\u003eauthlib/authlib#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport from Python 3.10 to 3.14 by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/850\"\u003eauthlib/authlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow composition of AuthorizationServerMetadata by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/853\"\u003eauthlib/authlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake require_oauth parenthesis optional by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/855\"\u003eauthlib/authlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at\u003c/code\u003e behavior when its value is 0 by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/854\"\u003eauthlib/authlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigration to joserfc by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/852\"\u003eauthlib/authlib#852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRP-initiated logout by \u003ca href=\"https://github.com/frohrlich\"\u003e\u003ccode\u003e@​frohrlich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/849\"\u003eauthlib/authlib#849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eget_jwt_config\u003c/code\u003e by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/858\"\u003eauthlib/authlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(ci): Update PyPy version from 3.10 to 3.11 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/863\"\u003eauthlib/authlib#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove \u0026quot;none\u0026quot; from default authlib.jose.jwt algorithms by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/860\"\u003eauthlib/authlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: normalize resolve_client_public_key method by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/861\"\u003eauthlib/authlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement rfc9700 PKCE downgrade countermeasure by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/864\"\u003eauthlib/authlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse correct syntax for tox.requires in tox.ini by \u003ca href=\"https://github.com/alex-ball\"\u003e\u003ccode\u003e@​alex-ball\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/868\"\u003eauthlib/authlib#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet client session User-Agent when fetching server metadata and JWKs by \u003ca href=\"https://github.com/alex-ball\"\u003e\u003ccode\u003e@​alex-ball\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/867\"\u003eauthlib/authlib#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: use the real application object for Flask by \u003ca href=\"https://github.com/nblock\"\u003e\u003ccode\u003e@​nblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/869\"\u003eauthlib/authlib#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept the issuer URL as a valid audience by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/865\"\u003eauthlib/authlib#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't nest InvalidTokenError extra attribute by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/872\"\u003eauthlib/authlib#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocumentation overhaul by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/875\"\u003eauthlib/authlib#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README.md docs.authlib.org/en/latest =\u0026gt; docs.authlib.org/en/stable by \u003ca href=\"https://github.com/guillett\"\u003e\u003ccode\u003e@​guillett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/876\"\u003eauthlib/authlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge release/1.6 branch by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/877\"\u003eauthlib/authlib#877\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/frohrlich\"\u003e\u003ccode\u003e@​frohrlich\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/849\"\u003eauthlib/authlib#849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/863\"\u003eauthlib/authlib#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alex-ball\"\u003e\u003ccode\u003e@​alex-ball\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/868\"\u003eauthlib/authlib#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nblock\"\u003e\u003ccode\u003e@​nblock\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/869\"\u003eauthlib/authlib#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/guillett\"\u003e\u003ccode\u003e@​guillett\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/876\"\u003eauthlib/authlib#876\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.10...v1.7.0\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.10...v1.7.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a0b76fac3fa114d7759af2010546bfc332364b63\"\u003e\u003ccode\u003ea0b76fa\u003c/code\u003e\u003c/a\u003e chore: bump to 1.7.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/c85c7f2b02faf2667f62b27aa60df042dbc9b4ab\"\u003e\u003ccode\u003ec85c7f2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/884\"\u003e#884\u003c/a\u003e from azmeuk/852-rfc7523-key-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a3b2adda43b4452ba9f384d224f95848974b4eb4\"\u003e\u003ccode\u003ea3b2add\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/873\"\u003e#873\u003c/a\u003e from azmeuk/bcp47\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/f2578eaa198aedbaaaf3bb00eccc451e15e45e3a\"\u003e\u003ccode\u003ef2578ea\u003c/code\u003e\u003c/a\u003e fix: Import RSAKey in auth.py for additional key support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b57182cf46a53da19623208dd852270ddec8ebcc\"\u003e\u003ccode\u003eb57182c\u003c/code\u003e\u003c/a\u003e fix: fallback support RSAKey when client_secret is text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/4e7590292ca9f948a0766640b27025618750e6c1\"\u003e\u003ccode\u003e4e75902\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into 852-rfc7523-key-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5eb4a860600ea2f3acc1a2a9c3e621a430da9d0f\"\u003e\u003ccode\u003e5eb4a86\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/887\"\u003e#887\u003c/a\u003e from azmeuk/883-alg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5633f37c47bd8352b962f982cb916bc8b95bb5d5\"\u003e\u003ccode\u003e5633f37\u003c/code\u003e\u003c/a\u003e fix: allow non-recommended algorithms in ClientSecretJWT and PrivateKeyJWT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/4c8e7b381aaef68f60e2323a25ba96cdb346f82f\"\u003e\u003ccode\u003e4c8e7b3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/886\"\u003e#886\u003c/a\u003e from azmeuk/885-readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/23b333e48a17ebf9f032a0e0f9eb3f990a06f97b\"\u003e\u003ccode\u003e23b333e\u003c/code\u003e\u003c/a\u003e docs: fix the readme links\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/1.6.12...v1.7.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloud-sql-python-connector` from 1.20.1 to 1.20.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/releases\"\u003ecloud-sql-python-connector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.20.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.2...v1.20.3\"\u003e1.20.3\u003c/a\u003e (2026-05-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1422\"\u003e#1422\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/6bb9b37ec441d260008e08db837d422a2ad15241\"\u003e6bb9b37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate dependencies to latest as of 2026-05-04 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1406\"\u003e#1406\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/d1282d88fc884be954e1f38cfaa62be2c03b2ee0\"\u003ed1282d8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.20.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.1...v1.20.2\"\u003e1.20.2\u003c/a\u003e (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest  (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1402\"\u003e#1402\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4bbe1f80581f974e1bd83eecf5f278fcf47026ae\"\u003e4bbe1f8\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/GoogleCloudPlatform/cloud-sql-python-connector/blob/main/CHANGELOG.md\"\u003ecloud-sql-python-connector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.2...v1.20.3\"\u003e1.20.3\u003c/a\u003e (2026-05-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1422\"\u003e#1422\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/6bb9b37ec441d260008e08db837d422a2ad15241\"\u003e6bb9b37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate dependencies to latest as of 2026-05-04 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1406\"\u003e#1406\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/d1282d88fc884be954e1f38cfaa62be2c03b2ee0\"\u003ed1282d8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.1...v1.20.2\"\u003e1.20.2\u003c/a\u003e (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest  (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1402\"\u003e#1402\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4bbe1f80581f974e1bd83eecf5f278fcf47026ae\"\u003e4bbe1f8\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/GoogleCloudPlatform/cloud-sql-python-connector/commit/4aaee21a90a9711b40c65fa10ffa888779901796\"\u003e\u003ccode\u003e4aaee21\u003c/code\u003e\u003c/a\u003e chore(main): release 1.20.3 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1409\"\u003e#1409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/90d57e4e3689c03303b684ff38744ca34bc716db\"\u003e\u003ccode\u003e90d57e4\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest-asyncio to v1.4.0 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1404\"\u003e#1404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/6bb9b37ec441d260008e08db837d422a2ad15241\"\u003e\u003ccode\u003e6bb9b37\u003c/code\u003e\u003c/a\u003e fix: update dependencies to latest (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1422\"\u003e#1422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/d1282d88fc884be954e1f38cfaa62be2c03b2ee0\"\u003e\u003ccode\u003ed1282d8\u003c/code\u003e\u003c/a\u003e fix: Update dependencies to latest as of 2026-05-04 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1406\"\u003e#1406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/31e418373eb19d042b233e28344392773ea1b57a\"\u003e\u003ccode\u003e31e4183\u003c/code\u003e\u003c/a\u003e chore(main): release 1.20.2 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1403\"\u003e#1403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4bbe1f80581f974e1bd83eecf5f278fcf47026ae\"\u003e\u003ccode\u003e4bbe1f8\u003c/code\u003e\u003c/a\u003e fix: update dependencies to latest  (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1402\"\u003e#1402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/0431af87b2613af56a013043bbd4b475bbd1edfe\"\u003e\u003ccode\u003e0431af8\u003c/code\u003e\u003c/a\u003e chore: Fix the build.sh deps command (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/513a91f040ca34d7616742ab0e2ed12eb01ce4b2\"\u003e\u003ccode\u003e513a91f\u003c/code\u003e\u003c/a\u003e chore: update blunderbuss (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4eff80b461a59bd49874047327d4ece140cdf333\"\u003e\u003ccode\u003e4eff80b\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pyasn1 to v0.6.3 [security] (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1386\"\u003e#1386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.1...v1.20.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2-binary` from 2.9.11 to 2.9.12\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\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/psycopg/psycopg2/commit/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `stripe` from 11.6.0 to 15.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/releases\"\u003estripe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.3.0\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-06-24.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1836\"\u003e#1836\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003erelease_details\u003c/code\u003e on \u003ccode\u003eReserve.Hold\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003etax_fund\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eBilling.CreditGrant.priority\u003c/code\u003e to be required\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebuyer_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Blik\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Blik\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Bizum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003etransaction_link_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.network\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003eusdsui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003efingerprint\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Pix\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Pix\u003c/code\u003e, and \u003ccode\u003eSetupAttempt.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebilling_cycle_anchor_config\u003c/code\u003e on \u003ccode\u003echeckout.SessionCreateParamsSubscriptionDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ewechat_pay\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emastercard_compliance\u003c/code\u003e on \u003ccode\u003eDispute.Evidence.EnhancedEvidence\u003c/code\u003e, \u003ccode\u003eDispute.EvidenceDetail.EnhancedEligibility\u003c/code\u003e, and \u003ccode\u003eDisputeModifyParamsEvidenceEnhancedEvidence\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003emastercard_compliance\u003c/code\u003e on enum \u003ccode\u003eDispute.enhanced_eligibility_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003estatus_details\u003c/code\u003e on \u003ccode\u003eFinancialConnections.Account\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003evalidated\u003c/code\u003e on enum \u003ccode\u003eIdentity.VerificationSession.Redaction.status\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoiceCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoice.PaymentSetting.payment_method_types\u003c/code\u003e and \u003ccode\u003eSubscription.PaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003estored_credential_usage\u003c/code\u003e on \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.description\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.description\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esetup_future_usage\u003c/code\u003e on \u003ccode\u003ePaymentIntent.PaymentMethodOption.Satispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionSatispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionSatispay\u003c/code\u003e, and \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionSatispay\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003ePaymentRecordReportRefundParams.refunded\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esatispay\u003c/code\u003e on \u003ccode\u003eSetupAttempt.PaymentMethodDetail\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecustom_fields\u003c/code\u003e, \u003ccode\u003edescription\u003c/code\u003e, and \u003ccode\u003efooter\u003c/code\u003e on \u003ccode\u003eSubscription.InvoiceSetting\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsInvoiceSetting\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsInvoiceSetting\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epayment_method_options\u003c/code\u003e and \u003ccode\u003epayment_method\u003c/code\u003e on \u003ccode\u003eTopupCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003e2026-06-24.dahlia\u003c/code\u003e on enum \u003ccode\u003eWebhookEndpointCreateParams.api_version\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emode\u003c/code\u003e on \u003ccode\u003eV2.Commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003eV2.Commerce.ProductCatalogImport.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eV2.Core.Account.Configuration.Merchant.Capability\u003c/code\u003e, \u003ccode\u003ev2.core.AccountCreateParamsConfigurationMerchantCapability\u003c/code\u003e, and \u003ccode\u003ev2.core.AccountModifyParamsConfigurationMerchantCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecrypto_money_manager\u003c/code\u003e and \u003ccode\u003emoney_manager\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003ecrypto_storer\u003c/code\u003e and \u003ccode\u003estorer\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003ev2.commerce.ProductCatalogImportCreateParams.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit_payments\u003c/code\u003e on enum \u003ccode\u003eEventsV2CoreAccountIncludingConfigurationMerchantCapabilityStatusUpdatedEvent.updated_capability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for error codes \u003ccode\u003eanomalous_money_movement_request\u003c/code\u003e, \u003ccode\u003efailed_tax_calculation\u003c/code\u003e, \u003ccode\u003efinancial_account_balance_does_not_support_currency\u003c/code\u003e, \u003ccode\u003efinancial_account_capability_not_enabled\u003c/code\u003e, and \u003ccode\u003efinancial_account_capability_restricted\u003c/code\u003e on \u003ccode\u003eInvoice.LastFinalizationError\u003c/code\u003e, \u003ccode\u003ePaymentIntent.LastPaymentError\u003c/code\u003e, \u003ccode\u003eSetupAttempt.SetupError\u003c/code\u003e, \u003ccode\u003eSetupIntent.LastSetupError\u003c/code\u003e, \u003ccode\u003eStripeError\u003c/code\u003e, and \u003ccode\u003eTerminal.Reader.Action.ApiError\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.3.0/CHANGELOG.md\"\u003ethe changelog for more details\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev15.3.0b1\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-05-27.private.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1801\"\u003e#1801\u003c/a\u003e Update generated code for beta\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epause\u003c/code\u003e method on resource \u003ccode\u003eSubscription\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eretrieve\u003c/code\u003e method on resource \u003ccode\u003ev2.iam.ActivityLog\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003emastercard\u003c/code\u003e on enum \u003ccode\u003eIssuing.Settlement.network\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change type of \u003ccode\u003eProductCatalog.TrialOffer.EndBehavior.Transition.price\u003c/code\u003e from \u003ccode\u003estring\u003c/code\u003e to \u003ccode\u003eexpandable($Price)\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/blob/master/CHANGELOG.md\"\u003estripe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e15.3.0 - 2026-06-24\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-06-24.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1836\"\u003e#1836\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003erelease_details\u003c/code\u003e on \u003ccode\u003eReserve.Hold\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003etax_fund\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eBilling.CreditGrant.priority\u003c/code\u003e to be required\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebuyer_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Blik\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Blik\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Bizum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003etransaction_link_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.network\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003eusdsui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003efingerprint\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Pix\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Pix\u003c/code\u003e, and \u003ccode\u003eSetupAttempt.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebilling_cycle_anchor_config\u003c/code\u003e on \u003ccode\u003echeckout.SessionCreateParamsSubscriptionDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ewechat_pay\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emastercard_compliance\u003c/code\u003e on \u003ccode\u003eDispute.Evidence.EnhancedEvidence\u003c/code\u003e, \u003ccode\u003eDispute.EvidenceDetail.EnhancedEligibility\u003c/code\u003e, and \u003ccode\u003eDisputeModifyParamsEvidenceEnhancedEvidence\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003emastercard_compliance\u003c/code\u003e on enum \u003ccode\u003eDispute.enhanced_eligibility_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003estatus_details\u003c/code\u003e on \u003ccode\u003eFinancialConnections.Account\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003evalidated\u003c/code\u003e on enum \u003ccode\u003eIdentity.VerificationSession.Redaction.status\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoiceCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoice.PaymentSetting.payment_method_types\u003c/code\u003e and \u003ccode\u003eSubscription.PaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003estored_credential_usage\u003c/code\u003e on \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.description\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.description\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esetup_future_usage\u003c/code\u003e on \u003ccode\u003ePaymentIntent.PaymentMethodOption.Satispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionSatispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionSatispay\u003c/code\u003e, and \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionSatispay\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003ePaymentRecordReportRefundParams.refunded\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esatispay\u003c/code\u003e on \u003ccode\u003eSetupAttempt.PaymentMethodDetail\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecustom_fields\u003c/code\u003e, \u003ccode\u003edescription\u003c/code\u003e, and \u003ccode\u003efooter\u003c/code\u003e on \u003ccode\u003eSubscription.InvoiceSetting\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsInvoiceSetting\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsInvoiceSetting\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epayment_method_options\u003c/code\u003e and \u003ccode\u003epayment_method\u003c/code\u003e on \u003ccode\u003eTopupCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003e2026-06-24.dahlia\u003c/code\u003e on enum \u003ccode\u003eWebhookEndpointCreateParams.api_version\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emode\u003c/code\u003e on \u003ccode\u003eV2.Commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003eV2.Commerce.ProductCatalogImport.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eV2.Core.Account.Configuration.Merchant.Capability\u003c/code\u003e, \u003ccode\u003ev2.core.AccountCreateParamsConfigurationMerchantCapability\u003c/code\u003e, and \u003ccode\u003ev2.core.AccountModifyParamsConfigurationMerchantCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecrypto_money_manager\u003c/code\u003e and \u003ccode\u003emoney_manager\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003ecrypto_storer\u003c/code\u003e and \u003ccode\u003estorer\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003ev2.commerce.ProductCatalogImportCreateParams.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit_payments\u003c/code\u003e on enum \u003ccode\u003eEventsV2CoreAccountIncludingConfigurationMerchantCapabilityStatusUpdatedEvent.updated_capability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for error codes \u003ccode\u003eanomalous_money_movement_request\u003c/code\u003e, \u003ccode\u003efailed_tax_calculation\u003c/code\u003e, \u003ccode\u003efinancial_account_balance_does_not_support_currency\u003c/code\u003e, \u003ccode\u003efinancial_account_capability_not_enabled\u003c/code\u003e, and \u003ccode\u003efinancial_account_capability_restricted\u003c/code\u003e on \u003ccode\u003eInvoice.LastFinalizationError\u003c/code\u003e, \u003ccode\u003ePaymentIntent.LastPaymentError\u003c/code\u003e, \u003ccode\u003eSetupAttempt.SetupError\u003c/code\u003e, \u003ccode\u003eSetupIntent.LastSetupError\u003c/code\u003e, \u003ccode\u003eStripeError\u003c/code\u003e, and \u003ccode\u003eTerminal.Reader.Action.ApiError\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e15.2.1 - 2026-06-12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1825\"\u003e#1825\u003c/a\u003e Add \u0026quot;source\u0026quot; field to user-agent header\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e15.2.0 - 2026-05-27\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-05-27.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1816\"\u003e#1816\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for new resource \u003ccode\u003ev2.commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecreate\u003c/code\u003e and \u003ccode\u003eretrieve\u003c/code\u003e methods on resource \u003ccode\u003ev2.commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebizum_payments\u003c/code\u003e and \u003ccode\u003escalapay_payments\u003c/code\u003e on \u003ccode\u003eAccount.Capability\u003c/code\u003e, \u003ccode\u003eAccountCreateParamsCapability\u003c/code\u003e, and \u003ccode\u003eAccountModifyParamsCapability\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/stripe/stripe-python/commit/4454934a9bd1d957e50d6f9b4d6c11cb827348db\"\u003e\u003ccode\u003e4454934\u003c/code\u003e\u003c/a\u003e Bump version to 15.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/fa25f2471e981e7f6ba633267a0e4abc81586766\"\u003e\u003ccode\u003efa25f24\u003c/code\u003e\u003c/a\u003e Update generated code (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1836\"\u003e#1836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/4280756589793409d9431e36b69524d5b393968d\"\u003e\u003ccode\u003e4280756\u003c/code\u003e\u003c/a\u003e Add PR disclaimer to README (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1831\"\u003e#1831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/3f0f83494bb4c8db3436e5bdbe045c16cdf7bca4\"\u003e\u003ccode\u003e3f0f834\u003c/code\u003e\u003c/a\u003e Upgrade CI runner from ubuntu-22.04 to ubuntu-24.04 (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1830\"\u003e#1830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/a8fcb6913bd4abbe777a1944a126bdf5da36ec87\"\u003e\u003ccode\u003ea8fcb69\u003c/code\u003e\u003c/a\u003e Remove retired manual API tests covered by generated examples (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1829\"\u003e#1829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/1eab0455197eb5d86f858120d062c3984a429b96\"\u003e\u003ccode\u003e1eab045\u003c/code\u003e\u003c/a\u003e Bump version to 15.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/36e43ba1d8304d25eba0623367ace415224c5b30\"\u003e\u003ccode\u003e36e43ba\u003c/code\u003e\u003c/a\u003e docs: clarify private preview SDK access in README (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1826\"\u003e#1826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/a5536454ca270b0a0857c65f2cb9d0b636ce8bba\"\u003e\u003ccode\u003ea553645\u003c/code\u003e\u003c/a\u003e Add source field to user-agent header (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1825\"\u003e#1825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/42db177ce3777b27135554cd09a4d59256a84d3b\"\u003e\u003ccode\u003e42db177\u003c/code\u003e\u003c/a\u003e Add Changelog section to PR template (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1823\"\u003e#1823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/2d39c3bc3ed3bcc07c1eb5516458ce63096d9984\"\u003e\u003ccode\u003e2d39c3b\u003c/code\u003e\u003c/a\u003e Disable trim_trailing_whitespace for CHANGELOG.md (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stripe/stripe-python/compare/v11.6.0...v15.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 3.3.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0.rc1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0.rc1\"\u003e4.0.0.rc1\u003c/a\u003e - 2025-09-07\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-keycloak` from 5.12.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marcospereirampj/python-keycloak/blob/master/CHANGELOG.md\"\u003epython-keycloak's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.1 (2026-02-15)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003euma\u003c/strong\u003e: set requested resource ids correctly in permission ticket creation (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.1.0 (2026-02-13)\u003c/h2\u003e\n\u003ch3\u003eFeat\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edecode token with all keys, added get client certificate info method (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.3 (2026-01-28)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not throw when processing signed userinfo response (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.2 (2026-01-08)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix/python version and ci (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.1 (2026-01-05)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003epython version\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.0 (2026-01-04)\u003c/h2\u003e\n\u003ch3\u003eBREAKING CHANGE\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethis change introduces a very strong typing across the library. From now on, we demand that each method returns a single type and converts the results into the specified return type, otherwise it raises a TypeError exception. This should resolve any type checking linter errors within the library as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdated lockfile\u003c/li\u003e\n\u003cli\u003epass along the default connection manager configuration into uma\u003c/li\u003e\n\u003cli\u003edont override transport for httpx\u003c/li\u003e\n\u003cli\u003epass query params in get groups\u003c/li\u003e\n\u003cli\u003eremoved async property as a dependency\u003c/li\u003e\n\u003cli\u003estrong and consistent typing across the library\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.0 (2025-12-28)\u003c/h2\u003e\n\u003ch3\u003eBREAKING CHANGE\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echanges the behavior of get_group_by_path to raise an exception in case the path is not found, which is now the definitive new behavior\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/de25a9c1fe49ab5a658cf66f24f6b5e92d84f664\"\u003e\u003ccode\u003ede25a9c\u003c/code\u003e\u003c/a\u003e fix(uma): set requested resource ids correctly in permission ticket creation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/9720e2deff8f93cd8fe0db34295929f7d704c7ca\"\u003e\u003ccode\u003e9720e2d\u003c/code\u003e\u003c/a\u003e docs: changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/98b9b245e3ac78fc7b287b4477e334ba91c7ffb4\"\u003e\u003ccode\u003e98b9b24\u003c/code\u003e\u003c/a\u003e feat: decode token with all keys, added get client certificate info method (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/f5333a079cf5363025e027c338118fea9494394e\"\u003e\u003ccode\u003ef5333a0\u003c/code\u003e\u003c/a\u003e docs: changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/ce07157bd9ef218e9d25b140c9f6d444b0c9e7b1\"\u003e\u003ccode\u003ece07157\u003c/code\u003e\u003c/a\u003e fix: do not throw when processing signed userinfo response (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/6580ac66666cf3804d735a59d51e51337083a70c\"\u003e\u003ccode\u003e6580ac6\u003c/code\u003e\u003c/a\u003e chore: updated deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/2f6beb38545bb8692eb0925a5ff37bb24a68e7e6\"\u003e\u003ccode\u003e2f6beb3\u003c/code\u003e\u003c/a\u003e chore(typehints): fixup typehints for role parameter for add composites (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/697\"\u003e#697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/7e8184dd1290ce1558037b0240ffce244fef2864\"\u003e\u003ccode\u003e7e8184d\u003c/code\u003e\u003c/a\u003e chore: typehints (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/696\"\u003e#696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/5e3ee8d5d606d5f1d548d8af6c4c1a61f86543d5\"\u003e\u003ccode\u003e5e3ee8d\u003c/code\u003e\u003c/a\u003e docs: changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/8eca957e33a9c895231170137f1566bc42ec1262\"\u003e\u003ccode\u003e8eca957\u003c/code\u003e\u003c/a\u003e fix: Fix/python version and ci (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marcospereirampj/python-keycloak/compare/v5.12.0...v7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.48 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `resend` from 2.27.0 to 2.32.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/resendlabs/resend-python/releases\"\u003eresend's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use Contacts.Imports nested class for consistent type namespacing by \u003ca href=\"https://github.com/drish\"\u003e\u003ccode\u003e@​drish\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/223\"\u003eresend/resend-python#223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.32.1...v2.32.2\"\u003ehttps://github.com/resend/resend-python/compare/v2.32.1...v2.32.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: contact imports segments typing by \u003ca href=\"https://github.com/drish\"\u003e\u003ccode\u003e@​drish\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/222\"\u003eresend/resend-python#222\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.32.0...v2.32.1\"\u003ehttps://github.com/resend/resend-python/compare/v2.32.0...v2.32.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add contact imports endpoints by \u003ca href=\"https://github.com/drish\"\u003e\u003ccode\u003e@​drish\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/220\"\u003eresend/resend-python#220\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.31.0...v2.32.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.31.0...v2.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.31.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: add sync-prs-to-linear action by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/207\"\u003eresend/resend-python#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump public-shared-workflows hash by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/208\"\u003eresend/resend-python#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump public-shared-workflows hash by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/210\"\u003eresend/resend-python#210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: inbound attachment types by \u003ca href=\"https://github.com/gabrielmfern\"\u003e\u003ccode\u003e@​gabrielmfern\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/211\"\u003eresend/resend-python#211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update python docker tag to v3.14.6 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/215\"\u003eresend/resend-python#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update codecov/codecov-action action to v7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/213\"\u003eresend/resend-python#213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix installing from sdist (setup.py imports the package, pulling typing_extensions at build time) by \u003ca href=\"https://github.com/sethc555\"\u003e\u003ccode\u003e@​sethc555\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/216\"\u003eresend/resend-python#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: missing query parameter for GET on a received email by \u003ca href=\"https://github.com/gabrielmfern\"\u003e\u003ccode\u003e@​gabrielmfern\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https...\n\n_Description has been truncated_","html_url":"https://github.com/OpenHands/OpenHands/pull/15093","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands/issues/15093","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15093/packages"},{"uuid":"4781533945","node_id":"PR_kwDOSZ_5Cs7sd3GP","number":12,"state":"open","title":"deps(backend): bump the backend-minor-and-patch group across 1 directory with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T01:12:18.000Z","updated_at":"2026-07-01T01:12:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(backend): bump","group_name":"backend-minor-and-patch","update_count":21,"packages":[{"name":"alembic","old_version":"1.18.4","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.13.0","new_version":"4.14.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.6.17","repository_url":"https://github.com/certifi/python-certifi"},{"name":"click","old_version":"8.3.3","new_version":"8.4.2","repository_url":"https://github.com/pallets/click"},{"name":"fastapi","old_version":"0.136.1","new_version":"0.138.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"greenlet","old_version":"3.5.0","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.13","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"jiter","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"openai","old_version":"2.33.0","new_version":"2.44.0","repository_url":"https://github.com/openai/openai-python"},{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.0","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pymupdf","old_version":"1.27.2.3","new_version":"1.28.0","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"pydantic-core","old_version":"2.46.3","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.0.0","new_version":"1.3.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.67.3","new_version":"4.68.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-minor-and-patch group with 21 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.18.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.6.17` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.4.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.138.2` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.0` | `3.5.3` |\n| [idna](https://github.com/kjd/idna) | `3.13` | `3.18` |\n| [jiter](https://github.com/pydantic/jiter) | `0.14.0` | `0.16.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [openai](https://github.com/openai/openai-python) | `2.33.0` | `2.44.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.3` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.0` | `2.14.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.27.2.3` | `1.28.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.3` | `2.47.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.0` | `1.3.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.3` | `4.68.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.49.0` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n\n\nUpdates `alembic` from 1.18.4 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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.13.0 to 4.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CapacityLimiter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Condition\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Event\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Lock\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.ResourceGuard\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Semaphore\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed cancellation exception escaping a cancel scope when triggered via \u003ccode\u003echeck_cancelled()\u003c/code\u003e in a worker thread (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1113\"\u003e#1113\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eTaskGroup\u003c/code\u003e raising \u003ccode\u003eAttributeError\u003c/code\u003e instead of a clear error when entered more than once (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1109\"\u003e#1109\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bahtya\"\u003e\u003ccode\u003e@​bahtya\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/149b9e907618fadf6840a4d3cebad533b0c7d033\"\u003e\u003ccode\u003e149b9e9\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/377518cd1160314f2fdf74f356ae9e848c94a065\"\u003e\u003ccode\u003e377518c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6 to 7 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b42a2f5e8e9910d0c57b970f9a747427a9da26f0\"\u003e\u003ccode\u003eb42a2f5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1185\"\u003e#1185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3ceb6ffbfa89be715f444550883356fbfbc13154\"\u003e\u003ccode\u003e3ceb6ff\u003c/code\u003e\u003c/a\u003e Allow 0 tokens in a CapacityLimiter instantiated outside an event loop (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e10d1db74f7a59cb283a1e4b3b22227da11c6f07\"\u003e\u003ccode\u003ee10d1db\u003c/code\u003e\u003c/a\u003e Add missing await to open_file() in file I/O concurrency example (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1dbc3b62256e5877bcf610aca98ba6e450d14c20\"\u003e\u003ccode\u003e1dbc3b6\u003c/code\u003e\u003c/a\u003e OutcomeException should not discard test runner_task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1180\"\u003e#1180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62\"\u003e\u003ccode\u003effe9133\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8\"\u003e\u003ccode\u003ef8b9f01\u003c/code\u003e\u003c/a\u003e Fixed asyncio lock waiter deadlocks after cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1145\"\u003e#1145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de\"\u003e\u003ccode\u003ed517ee1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49\"\u003e\u003ccode\u003e550b68e\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eanyio.run\u003c/code\u003e support \u003ccode\u003eAwaitable\u003c/code\u003e at runtime on all backends (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.4.22 to 2026.6.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/36e35680e0dc42c70cd60bfe440e92e7137f5a1c\"\u003e\u003ccode\u003e36e3568\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 6.0.0 to 6.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.06.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 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/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.2/\"\u003ehttps://pypi.org/project/click/8.4.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/34\"\u003ehttps://github.com/pallets/click/milestone/34\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by \u003ca href=\"https://redirect.github.com/pallets/click/issues/3126\"\u003e#3126\u003c/a\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3502\"\u003e#3502\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3043\"\u003e#3043\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3504\"\u003e#3504\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3508\"\u003e#3508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3509\"\u003e#3509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3059\"\u003e#3059\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3507\"\u003e#3507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3242\"\u003e#3242\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2542\"\u003e#2542\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3534\"\u003e#3534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from \u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3533\"\u003e#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2331\"\u003e#2331\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1884\"\u003e#1884\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3125\"\u003e#3125\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32\"\u003ehttps://github.com/pallets/click/milestone/32\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.2\u003c/h2\u003e\n\u003cp\u003eUnreleased\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by {pr}\u003ccode\u003e3126\u003c/code\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. {issue}\u003ccode\u003e3502\u003c/code\u003e\n{issue}\u003ccode\u003e3043\u003c/code\u003e {pr}\u003ccode\u003e3504\u003c/code\u003e {pr}\u003ccode\u003e3508\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. {pr}\u003ccode\u003e3509\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n{issue}\u003ccode\u003e3059\u003c/code\u003e {pr}\u003ccode\u003e3507\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. {issue}\u003ccode\u003e3242\u003c/code\u003e {issue}\u003ccode\u003e2542\u003c/code\u003e {pr}\u003ccode\u003e3534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from {pr}\u003ccode\u003e3482\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e\n{pr}\u003ccode\u003e3533\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. {issue}\u003ccode\u003e3458\u003c/code\u003e {pr}\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. {issue}\u003ccode\u003e3277\u003c/code\u003e {pr}\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eEnum\u003c/code\u003e values used as \u003ccode\u003eChoice\u003c/code\u003e options produces a\nvalid completion result. {issue}\u003ccode\u003e3015\u003c/code\u003e {pr}\u003ccode\u003e3471\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. {issue}\u003ccode\u003e3487\u003c/code\u003e {pr}\u003ccode\u003e3493\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e {pr}\u003ccode\u003e3482\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eopen_url\u003c/code\u003e on Windows when the file path contains spaces.\n{issue}\u003ccode\u003e2994\u003c/code\u003e {pr}\u003ccode\u003e3478\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e typing improvements. {pr}\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for {class}\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n{class}\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n{class}\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\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/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53\"\u003e\u003ccode\u003eb2e30a1\u003c/code\u003e\u003c/a\u003e Release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49\"\u003e\u003ccode\u003e7a16b20\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when module differs from distribution name (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc\"\u003e\u003ccode\u003ebec5928\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when top-level module differs from distribution...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd\"\u003e\u003ccode\u003e916883a\u003c/code\u003e\u003c/a\u003e Fix tests to not rely on \u003ccode\u003e-Wdefault\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3591\"\u003e#3591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520\"\u003e\u003ccode\u003e09195f6\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02\"\u003e\u003ccode\u003e1557e26\u003c/code\u003e\u003c/a\u003e Check for warning exception with idiomatic context manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3\"\u003e\u003ccode\u003ed9ff133\u003c/code\u003e\u003c/a\u003e Static typing improvements in \u003ccode\u003eclick.shell_completion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3460\"\u003e#3460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793\"\u003e\u003ccode\u003e762c97e\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581\"\u003e\u003ccode\u003e8929d39\u003c/code\u003e\u003c/a\u003e Convert changes to markdown. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd\"\u003e\u003ccode\u003e237be50\u003c/code\u003e\u003c/a\u003e Move changes headings down a level.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.136.1 to 0.138.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: Add TestMu again. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15830\"\u003e#15830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15820\"\u003e#15820\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15799\"\u003e#15799\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/702fea83bb3ef0b558104835d7936af49650fb2d\"\u003e\u003ccode\u003e702fea8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15864\"\u003e#15864\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6466865eec63cb545869d80e2ee6fbc54c4d364e\"\u003e\u003ccode\u003e6466865\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b790e14cb686506df663959ac4879053cfed38db\"\u003e\u003ccode\u003eb790e14\u003c/code\u003e\u003c/a\u003e ♻️ Make \u003ccode\u003eapp.frontend()\u003c/code\u003e return 404 for methods other than \u003ccode\u003eGET\u003c/code\u003e or \u003ccode\u003eHEAD\u003c/code\u003e wi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c2708d981729c96437dcc1d7cfa40cd15128bc60\"\u003e\u003ccode\u003ec2708d9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/403b1fa16f9519f4b5ab52413daae059479fae4a\"\u003e\u003ccode\u003e403b1fa\u003c/code\u003e\u003c/a\u003e 🔧 Update sponsors: remove Stainless (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15862\"\u003e#15862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1929ac23195136e8616ed1b7c3fd84c65b26d234\"\u003e\u003ccode\u003e1929ac2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cba41585675ecb0e119d3ca258821659f07ec3f7\"\u003e\u003ccode\u003ecba4158\u003c/code\u003e\u003c/a\u003e ♻️ Refactor how sponsors data is handled for banners (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15852\"\u003e#15852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b90c49aefad4958abdfbcacf9c2f816940a8f0e2\"\u003e\u003ccode\u003eb90c49a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15842\"\u003e#15842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f2f3df4852bf7cb29be1187806d95a0fdc7ea40\"\u003e\u003ccode\u003e1f2f3df\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0af003a85da454dcf6b6783e0ad3f0dd687e944f\"\u003e\u003ccode\u003e0af003a\u003c/code\u003e\u003c/a\u003e ♻️ Refactor Library Skills, make info easier to find for agents (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15841\"\u003e#15841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.1...0.138.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.5.0 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.0...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.13 to 3.18\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\nas arguments or on standard input, with options to select A-label\nor U-label output and control error handling.\u003c/li\u003e\n\u003cli\u003eRaise the minimum supported Python version to 3.9\u003c/li\u003e\n\u003cli\u003eVarious code quality improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f39ea903ba49eb5a0b2c6723c9a929b41ed4a0f1\"\u003e\u003ccode\u003ef39ea90\u003c/code\u003e\u003c/a\u003e Release 3.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/40f4e407bc7452da37c24b0c112dcda9a5b299ba\"\u003e\u003ccode\u003e40f4e40\u003c/code\u003e\u003c/a\u003e Pre-release 3.18rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1a5bf80f2fa40454589e6144efe5f72015ef9d24\"\u003e\u003ccode\u003e1a5bf80\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/253\"\u003e#253\u003c/a\u003e from kjd/lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5bbb26fc86e28c4ee1434ae8ae8db76de4c2a5ac\"\u003e\u003ccode\u003e5bbb26f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c532bae5270489cef8faf9f6b1eb70cbcb454c6d\"\u003e\u003ccode\u003ec532bae\u003c/code\u003e\u003c/a\u003e Rename decode() lenient= option to display= (issue \u003ca href=\"https://redirect.github.com/kjd/idna/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0b1758ba11952a2e88fd6141ffa620409bff0580\"\u003e\u003ccode\u003e0b1758b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/252\"\u003e#252\u003c/a\u003e from kjd/release-3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f48619c4cea6859b938d560fdd9feb898e678567\"\u003e\u003ccode\u003ef48619c\u003c/code\u003e\u003c/a\u003e Release 3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7421ba8003227f816142ab40178e3a7d204e6847\"\u003e\u003ccode\u003e7421ba8\u003c/code\u003e\u003c/a\u003e Pre-release 3.17rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/22ebb73b164081f209449b50162eb7ce086e96a4\"\u003e\u003ccode\u003e22ebb73\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/251\"\u003e#251\u003c/a\u003e from kjd/structure-optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2a7ac0a58c788d50112a5003af545a83807fb108\"\u003e\u003ccode\u003e2a7ac0a\u003c/code\u003e\u003c/a\u003e Drop redundant parallel-arrays comment from uts46data\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.13...v3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jiter` from 0.14.0 to 0.16.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/785cf750016150bda7410e95525bd6ed398102c4\"\u003e\u003ccode\u003e785cf75\u003c/code\u003e\u003c/a\u003e release: 0.16.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/259\"\u003e#259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/e192631a659bcf251402950b78c5d17a17a9d827\"\u003e\u003ccode\u003ee192631\u003c/code\u003e\u003c/a\u003e Add 'Part of the Pydantic Stack' footer to README (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/c929d0cb4c9f59f9b89d1a0585203924f7a87f3b\"\u003e\u003ccode\u003ec929d0c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eserde\u003c/code\u003e Deserializer implementation (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/6d57715e01ec78859c62fc5447073c0b5902de39\"\u003e\u003ccode\u003e6d57715\u003c/code\u003e\u003c/a\u003e Modernize Emscripten CI (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/257\"\u003e#257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/a3a02cdb056233eb89be77e6c5a11044f07b4d20\"\u003e\u003ccode\u003ea3a02cd\u003c/code\u003e\u003c/a\u003e Bump maturin to v1.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/2fe4246c71c003ddb32c943e3b432925f05f7d3c\"\u003e\u003ccode\u003e2fe4246\u003c/code\u003e\u003c/a\u003e update to PyO3 0.29 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/254\"\u003e#254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/1429532d486088de53293b57ad315a501e981e9a\"\u003e\u003ccode\u003e1429532\u003c/code\u003e\u003c/a\u003e Drop support for 3.13t target (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/255\"\u003e#255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/0bb22aa6b3a4d729e6c7bae74c05a5d0f1f654b0\"\u003e\u003ccode\u003e0bb22aa\u003c/code\u003e\u003c/a\u003e release: 0.15.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/0f3e5eb48a5fff16d825f9af2ea7c6748bbdfbb8\"\u003e\u003ccode\u003e0f3e5eb\u003c/code\u003e\u003c/a\u003e expose \u003ccode\u003eknown_number_bytes\u003c/code\u003e and parser methods for bytes -\u0026gt; number (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/jiter/compare/v0.14.0...v0.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.4 to 2.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.6 (May 18, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.6 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.6 is a quick release that fixes a regression discovered in the 2.4.5\nrelease.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 4 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e!EarlMilktea\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 4 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31444\"\u003e#31444\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31453\"\u003e#31453\u003c/a\u003e: BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31459\"\u003e#31459\u003c/a\u003e: BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31460\"\u003e#31460\u003c/a\u003e: BUG: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (May 15, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.5 is a patch release that fixes bugs discovered after the 2.4.4\nrelease, has some typing improvements, and maintains infrastructure.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 17 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAleksei Nikiforov\u003c/li\u003e\n\u003cli\u003eAnarion Zuo +\u003c/li\u003e\n\u003cli\u003eAnkit Ahlawat\u003c/li\u003e\n\u003cli\u003eBreno Favaretto +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eIgor Krivenko +\u003c/li\u003e\n\u003cli\u003eIjtihed Kilani +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMaarten Baert +\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b832a09cf2a169c833dd2371e7c07aa00b293242\"\u003e\u003ccode\u003eb832a09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31462\"\u003e#31462\u003c/a\u003e from charris/prepare-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/57cc147d2ceacffc6534642bfbdebb3a80428e1e\"\u003e\u003ccode\u003e57cc147\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/0c72b0b53b6b83c004e434b2c7855e73c000d21e\"\u003e\u003ccode\u003e0c72b0b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31459\"\u003e#31459\u003c/a\u003e from charris/backport-31347\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9778d26e0475d381ccb7817c3b4dd8cacef2b9eb\"\u003e\u003ccode\u003e9778d26\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/e0e38767d5d0f848ab44befeedcad71e8ef589c7\"\u003e\u003ccode\u003ee0e3876\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d1bffeb9ec4ec0bf029c94ea35abffa92d5c30f2\"\u003e\u003ccode\u003ed1bffeb\u003c/code\u003e\u003c/a\u003e BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary \u003ccode\u003evh\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31347\"\u003e#31347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/8d8d7e5a14a1da0bfb0faf609a7a7610c431e6e9\"\u003e\u003ccode\u003e8d8d7e5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31453\"\u003e#31453\u003c/a\u003e from seberg/issue-31452\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/bddaab7ace45f90148d8f2bb6e67daab2d45ec76\"\u003e\u003ccode\u003ebddaab7\u003c/code\u003e\u003c/a\u003e BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/37a1ecca8dff09b2c579a991194ac55b9971f3a7\"\u003e\u003ccode\u003e37a1ecc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31444\"\u003e#31444\u003c/a\u003e from charris/begin-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/3c0e043217a759a8a948ade158fec14348c3b459\"\u003e\u003ccode\u003e3c0e043\u003c/code\u003e\u003c/a\u003e MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.4.4...v2.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.33.0 to 2.44.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.44.0\u003c/h2\u003e\n\u003ch2\u003e2.44.0 (2026-06-24)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.43.0...v2.44.0\"\u003ev2.43.0...v2.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e prioritize first auth header (\u003ca href=\"https://github.com/openai/openai-python/commit/797e3362e222ae14e587a4543b76a54d8992d66c\"\u003e797e336\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.43.0\u003c/h2\u003e\n\u003ch2\u003e2.43.0 (2026-06-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.42.0...v2.43.0\"\u003ev2.42.0...v2.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/22542358490ef8f31f0d373e17f7b791b3d983ca\"\u003e2254235\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.42.0\u003c/h2\u003e\n\u003ch2\u003e2.42.0 (2026-06-16)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.1...v2.42.0\"\u003ev2.41.1...v2.42.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin spend_alerts (\u003ca href=\"https://github.com/openai/openai-python/commit/6134198a488996c4ff6fca4551afd55fb3294fdc\"\u003e6134198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f337bf43276c880d2daf09a5d7f9fc9a886c4bf2\"\u003ef337bf4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/7015158c3119acf57af6c20903587cef928530a9\"\u003e7015158\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix release workflow permissions (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3389\"\u003e#3389\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/a526ee813f085318fe3c6923ac3fa10c1cf56420\"\u003ea526ee8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse CI environment for examples API key (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3394\"\u003e#3394\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d64d811e82aff724397e32d593e50657fee3f905\"\u003ed64d811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e2.41.1 (2026-06-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.0...v2.41.1\"\u003ev2.41.0...v2.41.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove scheduled release workflow trigger (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3366\"\u003e#3366\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/2a91011abc21032db9566b98068afefb5fbb9b24\"\u003e2a91011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e2.41.0 (2026-06-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.40.0...v2.41.0\"\u003ev2.40.0...v2.41.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.44.0 (2026-06-24)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.43.0...v2.44.0\"\u003ev2.43.0...v2.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e prioritize first auth header (\u003ca href=\"https://github.com/openai/openai-python/commit/797e3362e222ae14e587a4543b76a54d8992d66c\"\u003e797e336\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.43.0 (2026-06-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.42.0...v2.43.0\"\u003ev2.42.0...v2.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/22542358490ef8f31f0d373e17f7b791b3d983ca\"\u003e2254235\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.42.0 (2026-06-16)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.1...v2.42.0\"\u003ev2.41.1...v2.42.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin spend_alerts (\u003ca href=\"https://github.com/openai/openai-python/commit/6134198a488996c4ff6fca4551afd55fb3294fdc\"\u003e6134198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f337bf43276c880d2daf09a5d7f9fc9a886c4bf2\"\u003ef337bf4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/7015158c3119acf57af6c20903587cef928530a9\"\u003e7015158\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix release workflow permissions (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3389\"\u003e#3389\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/a526ee813f085318fe3c6923ac3fa10c1cf56420\"\u003ea526ee8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse CI environment for examples API key (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3394\"\u003e#3394\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d64d811e82aff724397e32d593e50657fee3f905\"\u003ed64d811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.41.1 (2026-06-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.0...v2.41.1\"\u003ev2.41.0...v2.41.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove scheduled release workflow trigger (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3366\"\u003e#3366\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/2a91011abc21032db9566b98068afefb5fbb9b24\"\u003e2a91011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.41.0 (2026-06-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.40.0...v2.41.0\"\u003ev2.40.0...v2.41.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e responses.moderation and chat_completions.moderation (\u003ca href=\"https://github.com/openai/openai-python/commit/87e46c25ac9ca8cff407b52ad9fb33e326c059d6\"\u003e87e46c2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.40.0 (2026-06-01)\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/openai/openai-python/commit/6d9262d5c666a1e4d47f63178db907ba3087ac5d\"\u003e\u003ccode\u003e6d9262d\u003c/code\u003e\u003c/a\u003e release: 2.44.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/d35627525e192b7a65b556d8a79d22079ccabdf6\"\u003e\u003ccode\u003ed356275\u003c/code\u003e\u003c/a\u003e [codex] Add AWS Bedrock provider authentication (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3398\"\u003e#3398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/f47f9a270861ca6a6096e8ea15ef8f3e1fb089b0\"\u003e\u003ccode\u003ef47f9a2\u003c/code\u003e\u003c/a\u003e fix(auth): prioritize first auth header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e20b6b82c145091f0d8412a7e4a9bc5900a40462\"\u003e\u003ccode\u003ee20b6b8\u003c/code\u003e\u003c/a\u003e release: 2.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/4d354538e8c2618e228c80f1fdc332ee1f70d1f2\"\u003e\u003ccode\u003e4d35453\u003c/code\u003e\u003c/a\u003e feat(api): update OpenAPI spec or Stainless config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/2bba15e71817a75e9b8517e09cb244bc144b50d0\"\u003e\u003ccode\u003e2bba15e\u003c/code\u003e\u003c/a\u003e release: 2.42.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/1ec3e8298982d900d31b486177b5d4cecadcf035\"\u003e\u003ccode\u003e1ec3e82\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/93c2eca17d2d484b95245c849b39f51c6d291478\"\u003e\u003ccode\u003e93c2eca\u003c/code\u003e\u003c/a\u003e feat(api): manual updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/b269f88a30fcfbcceea1cc30deb00405db88c5e6\"\u003e\u003ccode\u003eb269f88\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/ee821d6b4a59d6b73850640162b6454da434f5f7\"\u003e\u003ccode\u003eee821d6\u003c/code\u003e\u003c/a\u003e feat(api): admin spend_alerts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.33.0...v2.44.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.14.0 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages gro...\n\n_Description has been truncated_","html_url":"https://github.com/khozhaniyazov/opensamga/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/khozhaniyazov%2Fopensamga/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4765226723","node_id":"PR_kwDOSpidf87roNWT","number":62,"state":"closed","title":"chore(deps)(deps): bump the python-minor-and-patch group in /backend with 4 updates","user":"dependabot[bot]","labels":["dependencies","backend"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-29T23:20:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-29T05:12:27.000Z","updated_at":"2026-06-29T23:20:47.000Z","time_to_close":65298,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): bump","group_name":"python-minor-and-patch","update_count":4,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.138.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"ultralytics","old_version":"8.4.60","new_version":"8.4.82","repository_url":"https://github.com/ultralytics/ultralytics"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group in /backend with 4 updates: [fastapi](https://github.com/fastapi/fastapi), [python-multipart](https://github.com/Kludex/python-multipart), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) and [ultralytics](https://github.com/ultralytics/ultralytics).\n\nUpdates `fastapi` from 0.136.3 to 0.138.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: Add TestMu again. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15830\"\u003e#15830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15820\"\u003e#15820\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15799\"\u003e#15799\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b90c49aefad4958abdfbcacf9c2f816940a8f0e2\"\u003e\u003ccode\u003eb90c49a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15842\"\u003e#15842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f2f3df4852bf7cb29be1187806d95a0fdc7ea40\"\u003e\u003ccode\u003e1f2f3df\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0af003a85da454dcf6b6783e0ad3f0dd687e944f\"\u003e\u003ccode\u003e0af003a\u003c/code\u003e\u003c/a\u003e ♻️ Refactor Library Skills, make info easier to find for agents (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15841\"\u003e#15841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d5494c1f01796350fa082cf8a82b124e95162e9d\"\u003e\u003ccode\u003ed5494c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/82c527e714f16bf9e07202aff0fb91cada329844\"\u003e\u003ccode\u003e82c527e\u003c/code\u003e\u003c/a\u003e 👷 Simplify pull request workflow triggers (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15836\"\u003e#15836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3f28dbe6d84cdac19bdb2b41e1664981e37359ab\"\u003e\u003ccode\u003e3f28dbe\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6ea6b1f12e6d1a45c630a8fdf5d4c7c0959dad9\"\u003e\u003ccode\u003ef6ea6b1\u003c/code\u003e\u003c/a\u003e 👷 Update issue-manager to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15833\"\u003e#15833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/219ac634ab82b6321492ef97fb223b618ce13948\"\u003e\u003ccode\u003e219ac63\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fcc8e1f99431a0b381eaef03e07446e6975422b7\"\u003e\u003ccode\u003efcc8e1f\u003c/code\u003e\u003c/a\u003e ⬆️ Update issue-manager to 0.7.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15831\"\u003e#15831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/457f4c705c0287e49d7aa4ddec292db6185d16e3\"\u003e\u003ccode\u003e457f4c7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.3...0.138.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.31 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\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.50 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `ultralytics` from 8.4.60 to 8.4.82\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ultralytics/ultralytics/releases\"\u003eultralytics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.4.82 - Fix Axelera export deleting its output when run from the model directory (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24965\"\u003e#24965\u003c/a\u003e)\u003c/h2\u003e\n\u003ch2\u003e🌟 Summary\u003c/h2\u003e\n\u003cp\u003e🔧 \u003cstrong\u003ev8.4.82 is mainly a stability and usability release focused on fixing YOLO26 Axelera export issues, improving classification RAM caching, and tightening several training/data handling edge cases.\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e📊 Key Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🚀 \u003cstrong\u003eMajor fix for YOLO26 Axelera exports\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where Axelera export could accidentally \u003cstrong\u003edelete its own output files\u003c/strong\u003e when run from the model’s directory.\u003c/li\u003e\n\u003cli\u003eThis was the key issue behind failed exports showing errors like “output model too small” even when compilation had actually succeeded.\u003c/li\u003e\n\u003cli\u003eThe fix now uses a safer temporary compile folder and adds export serialization to avoid conflicts from shared process state.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🔄 \u003cstrong\u003eAxelera export behavior restored for \u003ccode\u003eend2end=False\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA temporary restriction added in the previous change was removed.\u003c/li\u003e\n\u003cli\u003eYOLO26 Axelera exports can again work with \u003ccode\u003eend2end=False\u003c/code\u003e where supported, avoiding unnecessary breakage in existing workflows such as Ultralytics Platform jobs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧠 \u003cstrong\u003eClassification \u003ccode\u003ecache='ram'\u003c/code\u003e re-enabled with a memory-safe design\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eClassification training can now use RAM caching again without the previous memory growth problem.\u003c/li\u003e\n\u003cli\u003eImages are decoded once into a \u003cstrong\u003eshared memory buffer\u003c/strong\u003e instead of being copied separately into each worker.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🛑 \u003cstrong\u003eTraining now fails fast when all labels are empty\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf a detection dataset has no usable labels at all, training now stops immediately with a clear error instead of just warning and failing later in confusing ways.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🖼️ \u003cstrong\u003eImage format support cleanup\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded proper fallback loading for \u003ccode\u003e.heif\u003c/code\u003e images.\u003c/li\u003e\n\u003cli\u003eRemoved the invalid \u003ccode\u003e.jpeg2000\u003c/code\u003e extension from supported image format lists.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧹 \u003cstrong\u003ePython reliability improvements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed several mutable default argument definitions across metrics, TAL, augmentations, YOLOE, and SAM-related code.\u003c/li\u003e\n\u003cli\u003eThese bugs were subtle, but could cause shared state to leak across calls in long-running sessions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 \u003cstrong\u003eDocs and workflow polish\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eClarified \u003ccode\u003estream=True\u003c/code\u003e behavior in predict mode.\u003c/li\u003e\n\u003cli\u003eDocumented \u003ccode\u003eMLFLOW_KEEP_RUN_ACTIVE\u003c/code\u003e for MLflow users.\u003c/li\u003e\n\u003cli\u003eUpdated citations for YOLOv7, YOLOv9, YOLOv10, and YOLO12 docs.\u003c/li\u003e\n\u003cli\u003eSimplified Slack release/CI notifications for cleaner team alerts.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🎯 Purpose \u0026amp; Impact\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e✅ \u003cstrong\u003eMore reliable Axelera exports for YOLO26\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the most important change in the release.\u003c/li\u003e\n\u003cli\u003eUsers exporting YOLO26 models for Axelera hardware should see \u003cstrong\u003efar fewer mysterious export failures\u003c/strong\u003e, especially in automated or isolated environments like the \u003cstrong\u003e\u003ca href=\"https://platform.ultralytics.com\"\u003eUltralytics Platform\u003c/a\u003e\u003c/strong\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e⚙️ \u003cstrong\u003eSafer production workflows\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe Axelera fix prevents exported models from being silently removed during cleanup.\u003c/li\u003e\n\u003cli\u003eThat means more dependable deployment pipelines and less debugging time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e💾 \u003cstrong\u003eBetter memory efficiency for classification training\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRe-enabling RAM caching can improve training speed while avoiding the old worker duplication problem.\u003c/li\u003e\n\u003cli\u003eThis is especially helpful for users training classification models on larger datasets.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧪 \u003cstrong\u003eEarlier and clearer failure signals\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCatching all-empty labels at the start helps users fix dataset problems right away instead of encountering vague downstream errors later.\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/ultralytics/ultralytics/commit/67c7ab162611aaaf142bcc99d901fb3d07ed5600\"\u003e\u003ccode\u003e67c7ab1\u003c/code\u003e\u003c/a\u003e Fix Axelera export deleting its output when run from the model directory (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24\"\u003e#24\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/36bf9dd2a4c28d385fbca118410a968cf37d4a52\"\u003e\u003ccode\u003e36bf9dd\u003c/code\u003e\u003c/a\u003e Simplify Slack notification messages (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24964\"\u003e#24964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/97a87838a48bb500cccbcd319dcc3112af9d8571\"\u003e\u003ccode\u003e97a8783\u003c/code\u003e\u003c/a\u003e Fix classification cache='ram' leak via shared memory tensor (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24670\"\u003e#24670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/2fbd69346dcf97ee97254e453d9deae2ef5fa1d4\"\u003e\u003ccode\u003e2fbd693\u003c/code\u003e\u003c/a\u003e Refactor comments in tests/\u003cstrong\u003einit\u003c/strong\u003e.py for clarity (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24651\"\u003e#24651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/a57698c8d31295914b7f1202c5f5fae1f3082fc7\"\u003e\u003ccode\u003ea57698c\u003c/code\u003e\u003c/a\u003e Drop phantom jpeg2000 extension and fix heif loader fallback (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24594\"\u003e#24594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/b768e8ad14a047ce8f441d6dc356e7926a480bc8\"\u003e\u003ccode\u003eb768e8a\u003c/code\u003e\u003c/a\u003e docs: clarify stream=True behavior (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24657\"\u003e#24657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/9768b12cf13b217d3561e0f7806fbdbc370e6d2c\"\u003e\u003ccode\u003e9768b12\u003c/code\u003e\u003c/a\u003e docs: update YOLOv7, YOLOv9, YOLOv10 and YOLO12 citations (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24501\"\u003e#24501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/bd54d04b1760431ec36013b4e214c652f0cee9e4\"\u003e\u003ccode\u003ebd54d04\u003c/code\u003e\u003c/a\u003e Docs: document MLFLOW_KEEP_RUN_ACTIVE env var for MLflow integration (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24602\"\u003e#24602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/b55ab08b3783d7645811fc6f5c05e003a933f27d\"\u003e\u003ccode\u003eb55ab08\u003c/code\u003e\u003c/a\u003e Restore fail-fast when training labels are all empty (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24562\"\u003e#24562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/941fa7786eb94cadd53930b55ff1014a402ca7d8\"\u003e\u003ccode\u003e941fa77\u003c/code\u003e\u003c/a\u003e Fix mutable default args in augment, YOLOE, and SAM (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24630\"\u003e#24630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ultralytics/ultralytics/compare/v8.4.60...v8.4.82\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/EuroUnionConsult/PondiFarmApp/pull/62","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EuroUnionConsult%2FPondiFarmApp/issues/62","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/62/packages"},{"uuid":"4765077057","node_id":"PR_kwDOSFHYbs7rnuPm","number":27,"state":"closed","title":"deps(py): bump the python-minor group across 1 directory with 44 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-06T04:33:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-29T04:35:10.000Z","updated_at":"2026-07-06T04:33:15.000Z","time_to_close":604683,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(py): bump","group_name":"python-minor","update_count":44,"packages":[{"name":"anyio","old_version":"4.13.0","new_version":"4.14.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"cachetools","old_version":"7.0.5","new_version":"7.1.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"choreographer","old_version":"1.2.1","new_version":"1.3.0","repository_url":"https://github.com/plotly/choreographer"},{"name":"click","old_version":"8.3.2","new_version":"8.4.2","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.20","new_version":"1.8.21","repository_url":"https://github.com/microsoft/debugpy"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"duckdb","old_version":"1.5.2","new_version":"1.5.4","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"flask-cors","old_version":"6.0.2","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-wtf","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/pallets-eco/flask-wtf"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"hpack","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/python-hyper/hpack"},{"name":"idna","old_version":"3.15","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"ipython","old_version":"9.12.0","new_version":"9.15.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jedi","old_version":"0.19.2","new_version":"0.20.0","repository_url":"https://github.com/davidhalter/jedi"},{"name":"joserfc","old_version":"1.6.4","new_version":"1.7.1","repository_url":"https://github.com/authlib/joserfc"},{"name":"jupyter-client","old_version":"8.8.0","new_version":"8.9.1","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"kaleido","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib-inline","old_version":"0.2.1","new_version":"0.2.2","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mcp","old_version":"1.27.0","new_version":"1.28.1","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"narwhals","old_version":"2.19.0","new_version":"2.22.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.4.4","new_version":"2.5.0","repository_url":"https://github.com/numpy/numpy"},{"name":"orjson","old_version":"3.11.8","new_version":"3.11.9","repository_url":"https://github.com/ijl/orjson"},{"name":"parso","old_version":"0.8.6","new_version":"0.8.7","repository_url":"https://github.com/davidhalter/parso"},{"name":"platformdirs","old_version":"4.9.6","new_version":"4.10.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"plotly","old_version":"6.6.0","new_version":"6.8.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pyotp","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pyauth/pyotp"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-engineio","old_version":"4.13.1","new_version":"4.13.3","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-socketio","old_version":"5.16.1","new_version":"5.16.3","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"python-telegram-bot","old_version":"22.6","new_version":"22.8","repository_url":"https://github.com/python-telegram-bot/python-telegram-bot"},{"name":"pytz","old_version":"2026.1.post1","new_version":"2026.2","repository_url":"https://github.com/stub42/pytz"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"traitlets","old_version":"5.14.3","new_version":"5.15.1","repository_url":"https://github.com/ipython/traitlets"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.3","repository_url":"https://github.com/regebro/tzlocal"},{"name":"uvicorn","old_version":"0.44.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.6.0","new_version":"0.8.1","repository_url":"https://github.com/jquast/wcwidth"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"wtforms","old_version":"3.2.1","new_version":"3.2.2","repository_url":"https://github.com/pallets-eco/wtforms"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 44 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.1` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.0.5` | `7.1.4` |\n| [choreographer](https://github.com/plotly/choreographer) | `1.2.1` | `1.3.0` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.4.2` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.20` | `1.8.21` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.2` | `1.5.4` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.2` | `6.0.5` |\n| [flask-wtf](https://github.com/pallets-eco/flask-wtf) | `1.2.2` | `1.3.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.3` |\n| [hpack](https://github.com/python-hyper/hpack) | `4.1.0` | `4.2.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.18` |\n| [ipython](https://github.com/ipython/ipython) | `9.12.0` | `9.15.0` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.19.2` | `0.20.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.6.4` | `1.7.1` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.8.0` | `8.9.1` |\n| [kaleido](https://github.com/plotly/kaleido) | `1.2.0` | `1.3.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.2.1` | `0.2.2` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.0` | `1.28.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.19.0` | `2.22.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.5.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.8` | `3.11.9` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.6` | `0.8.7` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.6` | `4.10.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.6.0` | `6.8.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.47.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n| [pyotp](https://github.com/pyauth/pyotp) | `2.9.0` | `2.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.13.1` | `4.13.3` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.16.1` | `5.16.3` |\n| [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) | `22.6` | `22.8` |\n| [pytz](https://github.com/stub42/pytz) | `2026.1.post1` | `2026.2` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.14.3` | `5.15.1` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.44.0` | `0.49.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.6.0` | `0.8.1` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [wtforms](https://github.com/pallets-eco/wtforms) | `3.2.1` | `3.2.2` |\n\n\nUpdates `anyio` from 4.13.0 to 4.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CapacityLimiter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Condition\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Event\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Lock\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.ResourceGuard\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Semaphore\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed cancellation exception escaping a cancel scope when triggered via \u003ccode\u003echeck_cancelled()\u003c/code\u003e in a worker thread (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1113\"\u003e#1113\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eTaskGroup\u003c/code\u003e raising \u003ccode\u003eAttributeError\u003c/code\u003e instead of a clear error when entered more than once (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1109\"\u003e#1109\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bahtya\"\u003e\u003ccode\u003e@​bahtya\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/149b9e907618fadf6840a4d3cebad533b0c7d033\"\u003e\u003ccode\u003e149b9e9\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/377518cd1160314f2fdf74f356ae9e848c94a065\"\u003e\u003ccode\u003e377518c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6 to 7 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b42a2f5e8e9910d0c57b970f9a747427a9da26f0\"\u003e\u003ccode\u003eb42a2f5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1185\"\u003e#1185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3ceb6ffbfa89be715f444550883356fbfbc13154\"\u003e\u003ccode\u003e3ceb6ff\u003c/code\u003e\u003c/a\u003e Allow 0 tokens in a CapacityLimiter instantiated outside an event loop (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e10d1db74f7a59cb283a1e4b3b22227da11c6f07\"\u003e\u003ccode\u003ee10d1db\u003c/code\u003e\u003c/a\u003e Add missing await to open_file() in file I/O concurrency example (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1dbc3b62256e5877bcf610aca98ba6e450d14c20\"\u003e\u003ccode\u003e1dbc3b6\u003c/code\u003e\u003c/a\u003e OutcomeException should not discard test runner_task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1180\"\u003e#1180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62\"\u003e\u003ccode\u003effe9133\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8\"\u003e\u003ccode\u003ef8b9f01\u003c/code\u003e\u003c/a\u003e Fixed asyncio lock waiter deadlocks after cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1145\"\u003e#1145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de\"\u003e\u003ccode\u003ed517ee1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49\"\u003e\u003ccode\u003e550b68e\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eanyio.run\u003c/code\u003e support \u003ccode\u003eAwaitable\u003c/code\u003e at runtime on all backends (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apscheduler` from 3.11.2 to 3.11.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed sub-minute interval jobs stalling for the duration of a DST spring-forward gap when the scheduler was configured with a \u003ccode\u003eZoneInfo\u003c/code\u003e time zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1103\"\u003e#1103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed imported jobs missing their scheduler and job store links (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/4308ec95b94069f5dbdddb6c60fb792dfc8c40a4\"\u003e\u003ccode\u003e4308ec9\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ff68780d7f66fe0f505c3a32764005cd004996b9\"\u003e\u003ccode\u003eff68780\u003c/code\u003e\u003c/a\u003e Added a note about weekday numbers in CronTrigger.from_crontab()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/36936e904052e6bfbd03f83e17b03701b7a589fe\"\u003e\u003ccode\u003e36936e9\u003c/code\u003e\u003c/a\u003e Updated actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c0ff7e4ccfcc703db44a905b70c1d6568a6f81fa\"\u003e\u003ccode\u003ec0ff7e4\u003c/code\u003e\u003c/a\u003e Fixed Pyside6 tests failing on Python 3.9 and 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1b782c90edeac787deb3106fb3e5c775b3d6b0cd\"\u003e\u003ccode\u003e1b782c9\u003c/code\u003e\u003c/a\u003e Fixed fixture \u003ccode\u003ecoreapp\u003c/code\u003e not found\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/dc3dde4a34c021f215d120d88fe19ddc66bb8a66\"\u003e\u003ccode\u003edc3dde4\u003c/code\u003e\u003c/a\u003e Test against PySide6 on all Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/18a6f6b637e372730f6325786f97936e6eaa9f77\"\u003e\u003ccode\u003e18a6f6b\u003c/code\u003e\u003c/a\u003e Fixed imported jobs missing their scheduler and job store links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1693db4d8861bf941d299d79a586797ad0ac6467\"\u003e\u003ccode\u003e1693db4\u003c/code\u003e\u003c/a\u003e Fix interval jobs stalling across DST spring-forward with ZoneInfo (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0636bf4931fddb706b948b6781ebbd76058f1443\"\u003e\u003ccode\u003e0636bf4\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/3eb3de8115f1631dc5e2ecce7b00175d34ffbdf9\"\u003e\u003ccode\u003e3eb3de8\u003c/code\u003e\u003c/a\u003e Fixed bad use of pytest.raises()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.11.2...3.11.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 7.0.5 to 7.1.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.1.4 (2026-05-22)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor unit test improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.3 (2026-05-18)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor type stub improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.2 (2026-05-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor type stub improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor documentation improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.1 (2026-05-03)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eVarious type stub improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.0 (2026-05-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type stubs based on the work of the good people at \u003ccode\u003etypeshed \u0026lt;https://github.com/python/typeshed/tree/main/stubs/cachetools/\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.0.6 (2026-04-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor code improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate project URLs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/48284d73d0a8834c9c50f8d41bb99e6f93b2dfed\"\u003e\u003ccode\u003e48284d7\u003c/code\u003e\u003c/a\u003e Release v7.1.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/55ea96b88a485fca9effae0f838186274f00897c\"\u003e\u003ccode\u003e55ea96b\u003c/code\u003e\u003c/a\u003e Update build environment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c5439fe5dc883220b59469e450dbcbf9f4c2e52d\"\u003e\u003ccode\u003ec5439fe\u003c/code\u003e\u003c/a\u003e Add threading tests for lock-only decorators.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/91828fccd629d426157a165d38563614ba06a875\"\u003e\u003ccode\u003e91828fc\u003c/code\u003e\u003c/a\u003e Run threading tests unconditionally with timeout.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/16952edb1eb2d2ced7601e12db722008e5156912\"\u003e\u003ccode\u003e16952ed\u003c/code\u003e\u003c/a\u003e Release v7.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/92dd756b93813d1ddfe70893e9c219342a52e19a\"\u003e\u003ccode\u003e92dd756\u003c/code\u003e\u003c/a\u003e Prepare v7.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/ced08f52ef792a010b8171715c7842da4e11b9ac\"\u003e\u003ccode\u003eced08f5\u003c/code\u003e\u003c/a\u003e Improve cachetools.func type stubs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/d809d7be5a222effd3663c33baaaee3802972daa\"\u003e\u003ccode\u003ed809d7b\u003c/code\u003e\u003c/a\u003e Update build environment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c84b5e5be3d33a32d33f0988b524fb86de1e44f2\"\u003e\u003ccode\u003ec84b5e5\u003c/code\u003e\u003c/a\u003e Release v7.1.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/39ad61c1db56600fe903f3c4216996c491e775bf\"\u003e\u003ccode\u003e39ad61c\u003c/code\u003e\u003c/a\u003e Prepare v7.1.2.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v7.0.5...v7.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `choreographer` from 1.2.1 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/choreographer/blob/main/CHANGELOG.md\"\u003echoreographer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.3.0] -- 2026-04-28\u003c/h2\u003e\n\u003cp\u003eRolls up the changes from the \u003ccode\u003e1.3.0rc0\u003c/code\u003e–\u003ccode\u003e1.3.0rc2\u003c/code\u003e release candidates.\u003c/p\u003e\n\u003ch2\u003e[1.3.0rc2] -- 2025-12-10\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--verify_local\u003c/code\u003e option in \u003ccode\u003echoreo_diagnose\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/288\"\u003e#288\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCheck path validity for browser with \u003ccode\u003eis_file()\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/288\"\u003e#288\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix local reporting logic in \u003ccode\u003echoreo_diagnose\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/288\"\u003e#288\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.3.0rc1] -- 2025-11-30\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLook for both the old download path and the new download path when locating chrome [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/286\"\u003e#286\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.3.0rc0] -- 2025-11-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ewith_perf\u003c/code\u003e keyword argument to \u003ccode\u003eSession.send_command\u003c/code\u003e / \u003ccode\u003eTarget.send_command\u003c/code\u003e to return timing information about browser write/read [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/271\"\u003e#271\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd a set of helper functions to await tab loading and send JavaScript [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/279\"\u003e#279\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eforce\u003c/code\u003e argument so chrome is not re-downloaded if the requested version already exists [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to a process group for more reliable termination of multi-process chrome [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/280\"\u003e#280\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate default chrome from 135.0.7011.0/1418433 to 144.0.7527.0/1544685 [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eChange chrome download path to use the XDG cache directory [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eget_chrome\u003c/code\u003e verbose output print the whole JSON response [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unused system inspection code [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/278\"\u003e#278\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a retry loop to populate targets, since newer chrome takes longer and doesn't populate targets right away [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/282\"\u003e#282\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/283\"\u003e#283\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/92147b1ccf024ae647f29ebf43057564011e06c9\"\u003e\u003ccode\u003e92147b1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/choreographer/issues/296\"\u003e#296\u003c/a\u003e from plotly/cam/update-changelog-v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/8851fc919bc7dfb27a48541543f1ff195c48eda3\"\u003e\u003ccode\u003e8851fc9\u003c/code\u003e\u003c/a\u003e Updates to release version v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/3128bddf909381a2b4205f0e28c0c3cb8b13498c\"\u003e\u003ccode\u003e3128bdd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/choreographer/issues/288\"\u003e#288\u003c/a\u003e from plotly/andrew/more_local_logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/a6f478e00fb81ad22db7c7c1d31028fb4ab20311\"\u003e\u003ccode\u003ea6f478e\u003c/code\u003e\u003c/a\u003e Add to changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/953e19ad5dc395a3554cfbaf25599a8a3db6d933\"\u003e\u003ccode\u003e953e19a\u003c/code\u003e\u003c/a\u003e Check browser is file whwen checking path validity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/d062e355b819b84e57060d4e48fbe2aa6f063259\"\u003e\u003ccode\u003ed062e35\u003c/code\u003e\u003c/a\u003e Change default setting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/c0c97fc64a55c773dd7484674996cf55d74249a1\"\u003e\u003ccode\u003ec0c97fc\u003c/code\u003e\u003c/a\u003e Add option to verify local with choreo_diagnose\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/7ade1922269a6999c06f2ff92b34a1770bba6d3e\"\u003e\u003ccode\u003e7ade192\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/choreographer/issues/286\"\u003e#286\u003c/a\u003e from plotly/andrew/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/edf284c8973dd9dc7f7b2f77a53481fe6f0d2671\"\u003e\u003ccode\u003eedf284c\u003c/code\u003e\u003c/a\u003e Update Roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/c1b7abce535feb79748c888ba1130b985c13eb3f\"\u003e\u003ccode\u003ec1b7abc\u003c/code\u003e\u003c/a\u003e Changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/choreographer/compare/v1.2.1...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.2 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/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.2/\"\u003ehttps://pypi.org/project/click/8.4.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/34\"\u003ehttps://github.com/pallets/click/milestone/34\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by \u003ca href=\"https://redirect.github.com/pallets/click/issues/3126\"\u003e#3126\u003c/a\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3502\"\u003e#3502\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3043\"\u003e#3043\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3504\"\u003e#3504\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3508\"\u003e#3508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3509\"\u003e#3509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3059\"\u003e#3059\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3507\"\u003e#3507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3242\"\u003e#3242\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2542\"\u003e#2542\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3534\"\u003e#3534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from \u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3533\"\u003e#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2331\"\u003e#2331\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1884\"\u003e#1884\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3125\"\u003e#3125\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32\"\u003ehttps://github.com/pallets/click/milestone/32\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.2\u003c/h2\u003e\n\u003cp\u003eUnreleased\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by {pr}\u003ccode\u003e3126\u003c/code\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. {issue}\u003ccode\u003e3502\u003c/code\u003e\n{issue}\u003ccode\u003e3043\u003c/code\u003e {pr}\u003ccode\u003e3504\u003c/code\u003e {pr}\u003ccode\u003e3508\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. {pr}\u003ccode\u003e3509\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n{issue}\u003ccode\u003e3059\u003c/code\u003e {pr}\u003ccode\u003e3507\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. {issue}\u003ccode\u003e3242\u003c/code\u003e {issue}\u003ccode\u003e2542\u003c/code\u003e {pr}\u003ccode\u003e3534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from {pr}\u003ccode\u003e3482\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e\n{pr}\u003ccode\u003e3533\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. {issue}\u003ccode\u003e3458\u003c/code\u003e {pr}\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. {issue}\u003ccode\u003e3277\u003c/code\u003e {pr}\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eEnum\u003c/code\u003e values used as \u003ccode\u003eChoice\u003c/code\u003e options produces a\nvalid completion result. {issue}\u003ccode\u003e3015\u003c/code\u003e {pr}\u003ccode\u003e3471\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. {issue}\u003ccode\u003e3487\u003c/code\u003e {pr}\u003ccode\u003e3493\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e {pr}\u003ccode\u003e3482\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eopen_url\u003c/code\u003e on Windows when the file path contains spaces.\n{issue}\u003ccode\u003e2994\u003c/code\u003e {pr}\u003ccode\u003e3478\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e typing improvements. {pr}\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for {class}\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n{class}\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n{class}\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\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/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53\"\u003e\u003ccode\u003eb2e30a1\u003c/code\u003e\u003c/a\u003e Release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49\"\u003e\u003ccode\u003e7a16b20\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when module differs from distribution name (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc\"\u003e\u003ccode\u003ebec5928\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when top-level module differs from distribution...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd\"\u003e\u003ccode\u003e916883a\u003c/code\u003e\u003c/a\u003e Fix tests to not rely on \u003ccode\u003e-Wdefault\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3591\"\u003e#3591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520\"\u003e\u003ccode\u003e09195f6\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02\"\u003e\u003ccode\u003e1557e26\u003c/code\u003e\u003c/a\u003e Check for warning exception with idiomatic context manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3\"\u003e\u003ccode\u003ed9ff133\u003c/code\u003e\u003c/a\u003e Static typing improvements in \u003ccode\u003eclick.shell_completion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3460\"\u003e#3460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793\"\u003e\u003ccode\u003e762c97e\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581\"\u003e\u003ccode\u003e8929d39\u003c/code\u003e\u003c/a\u003e Convert changes to markdown. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd\"\u003e\u003ccode\u003e237be50\u003c/code\u003e\u003c/a\u003e Move changes headings down a level.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.20 to 1.8.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.21\u003c/h2\u003e\n\u003cp\u003eFixes for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReturn evaluate result in DAP response body instead of writing to stdout: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent invalid \u003ccode\u003escopes\u003c/code\u003e request from crashing debug session: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2026\"\u003e#2026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip uninitialized \u003ccode\u003e__slots__\u003c/code\u003e in variable resolver: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2024\"\u003e#2024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e-c\u003c/code\u003e arguments that are \u003ccode\u003ebytes\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix evaluation of variables from chained exception frames: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2018\"\u003e#2018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eContinueRequest\u003c/code\u003e with a specific \u003ccode\u003ethreadId\u003c/code\u003e no longer resumes all threads (in-process adapter): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2012\"\u003e#2012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid strong reference to exceptions during unwind: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2008\"\u003e#2008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow error message on evaluate failures in the hover context: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2006\"\u003e#2006\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisplay \u003ccode\u003edlerror\u003c/code\u003e output when \u003ccode\u003edlopen\u003c/code\u003e fails: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2000\"\u003e#2000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace removed \u003ccode\u003epkgutil.get_loader\u003c/code\u003e with \u003ccode\u003eimportlib.util.find_spec\u003c/code\u003e in \u003ccode\u003eget_fullname\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1998\"\u003e#1998\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEnhancements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to ignore all system exit codes: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2017\"\u003e#2017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePull changes from pydevd up to March 2026: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2010\"\u003e#2010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure work:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress Flawfinder false positives on Cython memcpy / read-loop iterators (TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816219\"\u003e#2816219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2028\"\u003e#2028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2029\"\u003e#2029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2030\"\u003e#2030\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2031\"\u003e#2031\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/maxbachmann\"\u003e\u003ccode\u003e@​maxbachmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/mfussenegger\"\u003e\u003ccode\u003e@​mfussenegger\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/sambrightman\"\u003e\u003ccode\u003e@​sambrightman\u003c/code\u003e\u003c/a\u003e for the commits.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/858b05c08555cfc54efa7cf90e70184c7495b38e\"\u003e\u003ccode\u003e858b05c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e: suppress Flawfinder false positive on Cython JoinPyUnicode ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/f0c34f133ad3eb7992ca50e45e5459f9d58f4be8\"\u003e\u003ccode\u003ef0c34f1\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e: suppress Flawfinder false positive on Cython DIGIT_PAIRS_8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/4c70e13d0e3fc8eee5013cd2a41c7a6d752d55d3\"\u003e\u003ccode\u003e4c70e13\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/19c2b8c029975a6ba2e4e521d8fbdf5f1b3ed8fd\"\u003e\u003ccode\u003e19c2b8c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ab9263839637357f3372ffb550395ffbf8ce9f77\"\u003e\u003ccode\u003eab92638\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2031\"\u003e#2031\u003c/a\u003e from StellaHuang95/stellahuang/tsa-2816219-flawfinde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/12bd4fef7ea5c35248d9f175f5b0218b970fa64c\"\u003e\u003ccode\u003e12bd4fe\u003c/code\u003e\u003c/a\u003e Return evaluate result in DAP response body instead of writing to stdout (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2027\"\u003e#2027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/8bd57a7d446d6ec4d7dd4e580d00cdea193ddcd9\"\u003e\u003ccode\u003e8bd57a7\u003c/code\u003e\u003c/a\u003e Prevent invalid scopes request from crashing debug session (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2026\"\u003e#2026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/bf118c8d0ec97e584d2f3cfd781f04a745a1334c\"\u003e\u003ccode\u003ebf118c8\u003c/code\u003e\u003c/a\u003e Skip uninitialized \u003cstrong\u003eslots\u003c/strong\u003e in variable resolver (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/a55be0e6f0700646e0833097ab78b2e4ba68745b\"\u003e\u003ccode\u003ea55be0e\u003c/code\u003e\u003c/a\u003e Potential fix when \u003ccode\u003e-c\u003c/code\u003e arguments are bytes instead of a str (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/0f037adec6fb2f61ad225849e953188ec349adbc\"\u003e\u003ccode\u003e0f037ad\u003c/code\u003e\u003c/a\u003e Fix evaluation of variables from chained exception frames (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2018\"\u003e#2018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.20...v1.8.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `decorator` from 5.2.1 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/micheles/decorator/blob/master/CHANGES.md\"\u003edecorator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2026-05-18)\u003c/h2\u003e\n\u003cp\u003eAdded license SPDX identifier to pyproject.toml (reported by\nChristian Lackas).\u003c/p\u003e\n\u003ch2\u003e5.3.0 (2026-05-17)\u003c/h2\u003e\n\u003cp\u003eAdded official support for Python 3.14 (thanks to Hugo van Kemenade,\nDavid Cain and the GitHub user bersbersbers).\nFixed a bug with \u0026quot;return await\u0026quot; contributed by Kadir Can Ozden.\nMoved decorator.py to a package structure (\u003ccode\u003edecorator/__init__.py\u003c/code\u003e) and\nadded a stub file (\u003ccode\u003edecorator/__init__.pyi\u003c/code\u003e) contributed by Marco Gorelli.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/426e9e35d563ffe356e54bd0f970d153b8f25370\"\u003e\u003ccode\u003e426e9e3\u003c/code\u003e\u003c/a\u003e Bumped the version to 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/062ff0e0c33733f2148a5590d118a8570df846d5\"\u003e\u003ccode\u003e062ff0e\u003c/code\u003e\u003c/a\u003e Fixed the dependency on setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/086ff5d95d4dc550117c12647a4427d70bf8833d\"\u003e\u003ccode\u003e086ff5d\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/5807a83ead31f0de5303fa950ddea49d850d7355\"\u003e\u003ccode\u003e5807a83\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/093aced11439251e496b47a9a9369501075e8d1a\"\u003e\u003ccode\u003e093aced\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/e9ced7e63ad9502b3e2a3e3db5f5f1ccc16c5fd6\"\u003e\u003ccode\u003ee9ced7e\u003c/code\u003e\u003c/a\u003e Added license SPDX\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/b3e82ddc04e8d0c18c51eecb30b4a59aee5aac1d\"\u003e\u003ccode\u003eb3e82dd\u003c/code\u003e\u003c/a\u003e Fixed CHANGES.md [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/f1ce8da8522193421436c368849afe886666b4e5\"\u003e\u003ccode\u003ef1ce8da\u003c/code\u003e\u003c/a\u003e Doc fix [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/c924d7c6aa2e47a0627706c385101ff8d558d091\"\u003e\u003ccode\u003ec924d7c\u003c/code\u003e\u003c/a\u003e Updated supported versions [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/8b83e8cca35f5c773654ce4ae89b4e3f84f430d3\"\u003e\u003ccode\u003e8b83e8c\u003c/code\u003e\u003c/a\u003e Fixed CHANGES [ci skip]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/micheles/decorator/compare/5.2.1...5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.2 to 1.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.4 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.4\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake rel-\u0026gt;query work with a read only connection by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/471\"\u003educkdb/duckdb-python#471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore Polars dynamic predicates by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/482\"\u003educkdb/duckdb-python#482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept pathlib.Path, os.PathLike, bytes, and file-like objects in read_parquet/from_parquet by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/489\"\u003educkdb/duckdb-python#489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnify arrow exports across all query result types by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/495\"\u003educkdb/duckdb-python#495\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.5.3 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee the DuckDB core release notes here: \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.3\"\u003ehttps://github.com/duckdb/duckdb/releases/tag/v1.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExport all symbols by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/445\"\u003educkdb/duckdb-python#445\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix concjunction OR by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/465\"\u003educkdb/duckdb-python#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse recursive mutex to deal with GIL \u0026lt;-\u0026gt; internal lock deadlocks by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/462\"\u003educkdb/duckdb-python#462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow self-joining of Polars lazyframes by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/466\"\u003educkdb/duckdb-python#466\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.2...v1.5.3\"\u003ehttps://github.com/duckdb/duckdb-python/compare/v1.5.2...v1.5.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/305369d48d2b7e3460c36f00842200b560d6447d\"\u003e\u003ccode\u003e305369d\u003c/code\u003e\u003c/a\u003e Pin duckdb at release hash 08e34c447b\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6ac2daa21313aa8805a99de4e0f7e8748f781bf6\"\u003e\u003ccode\u003e6ac2daa\u003c/code\u003e\u003c/a\u003e Unify arrow exports across all query result types (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/495\"\u003e#495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/321197761923c6a104cc88a099f45d15adf534f2\"\u003e\u003ccode\u003e3211977\u003c/code\u003e\u003c/a\u003e force windows 2022 runners\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c8c35ebd79889a7a23d8e46deaf35272b9eb17ac\"\u003e\u003ccode\u003ec8c35eb\u003c/code\u003e\u003c/a\u003e Get the arrow schema in a separate transaction for materialized data only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/7ddc75fe0d329782650950a9392771b52e07f8e5\"\u003e\u003ccode\u003e7ddc75f\u003c/code\u003e\u003c/a\u003e run schema fetching in same transaction as arrow data conversion and only once\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5fd7f6953c9dda38d294862e5e297592a74fa289\"\u003e\u003ccode\u003e5fd7f69\u003c/code\u003e\u003c/a\u003e strip comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/426f6ccec4ad43c9f4aa74998302f2c85e2d8b18\"\u003e\u003ccode\u003e426f6cc\u003c/code\u003e\u003c/a\u003e Pull materialized CDCs through the engine again for arrow conversion with a l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/b93667893172ad42a364c286497b1feb6c7fff83\"\u003e\u003ccode\u003eb936678\u003c/code\u003e\u003c/a\u003e Accept pathlib.Path, os.PathLike, bytes, and file-like objects in read_parque...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/b41a92cd4d9ffa011ba8cb37b965fb4f792ab5ee\"\u003e\u003ccode\u003eb41a92c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/1e41c88453ebc74a85d1230b4431e3c01842f5a6\"\u003e\u003ccode\u003e1e41c88\u003c/code\u003e\u003c/a\u003e accept pathlib.Path, os.PathLike, bytes, and file-like objects in read_parque...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.2...v1.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-cors` from 6.0.2 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/corydolphin/flask-cors/releases\"\u003eflask-cors's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.5\u003c/h2\u003e\n\u003cp\u003eSupersedes 6.0.4\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd MyPy Typing and modernize options parsing by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/409\"\u003ecorydolphin/flask-cors#409\u003c/a\u003e (this broke strict type checking when using Blueprints)\u003c/li\u003e\n\u003cli\u003eRestore Blueprint support in CORS type signatures (\u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/issues/410\"\u003e#410\u003c/a\u003e) by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/411\"\u003ecorydolphin/flask-cors#411\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.5\"\u003ehttps://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd MyPy Typing  by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/409\"\u003ecorydolphin/flask-cors#409\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.4\"\u003ehttps://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDerive package version from git tag via setuptools-scm by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/405\"\u003ecorydolphin/flask-cors#405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CI/CD security with least privilege and build separation by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/406\"\u003ecorydolphin/flask-cors#406\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.3\"\u003ehttps://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.3-pre\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDerive package version from git tag via setuptools-scm by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/405\"\u003ecorydolphin/flask-cors#405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CI/CD security with least privilege and build separation by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/406\"\u003ecorydolphin/flask-cors#406\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.3\"\u003ehttps://github.com/corydolphin/flask-cors/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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/91ebc49c25aaf76b0e53e925feef1e3f19617c87\"\u003e\u003ccode\u003e91ebc49\u003c/code\u003e\u003c/a\u003e Typing Hotfix: support blueprints in the type system\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/d601665840bdf128912573c9b02e1b55062625a1\"\u003e\u003ccode\u003ed601665\u003c/code\u003e\u003c/a\u003e Add strict MyPy Typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/c8e8871076c7ed378eb0ae773a2079b6d62ed7a9\"\u003e\u003ccode\u003ec8e8871\u003c/code\u003e\u003c/a\u003e Harden release publishing workflow (\u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/issues/406\"\u003e#406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/e1d4034e2b2d5232f6fed27bc753f90331747b64\"\u003e\u003ccode\u003ee1d4034\u003c/code\u003e\u003c/a\u003e Derive package version from git tag via setuptools-scm (\u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-wtf` from 1.2.2 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/flask-wtf/releases\"\u003eflask-wtf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epre-commit autoupdate by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/607\"\u003epallets-eco/flask-wtf#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eremove slsa provenance by \u003ca href=\"https://github.com/davidism\"\u003e\u003ccode\u003e@​davidism\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/638\"\u003epallets-eco/flask-wtf#638\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14 by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/648\"\u003epallets-eco/flask-wtf#648\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTry not to read uploaded files into memory by \u003ca href=\"https://github.com/Zverik\"\u003e\u003ccode\u003e@​Zverik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/635\"\u003epallets-eco/flask-wtf#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate the project to uv by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/649\"\u003epallets-eco/flask-wtf#649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReCaptcha field testing mode documentation by \u003ca href=\"https://github.com/OmeirP\"\u003e\u003ccode\u003e@​OmeirP\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/650\"\u003epallets-eco/flask-wtf#650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow nonce in reCaptcha by \u003ca href=\"https://github.com/kesara\"\u003e\u003ccode\u003e@​kesara\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/312\"\u003epallets-eco/flask-wtf#312\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCSRF meta tag helper by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/674\"\u003epallets-eco/flask-wtf#674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ewidget support the kwargs to add custom html attributes by \u003ca href=\"https://github.com/thivolle-cazat-cedric\"\u003e\u003ccode\u003e@​thivolle-cazat-cedric\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/353\"\u003epallets-eco/flask-wtf#353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect exempts in CSRFProtect.protect() by \u003ca href=\"https://github.com/rauchy\"\u003e\u003ccode\u003e@​rauchy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/419\"\u003epallets-eco/flask-wtf#419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding RECAPTCHA_ENABLE to disable recaptcha by \u003ca href=\"https://github.com/rnt\"\u003e\u003ccode\u003e@​rnt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/509\"\u003epallets-eco/flask-wtf#509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CSRF Documentation by \u003ca href=\"https://github.com/israel-oye\"\u003e\u003ccode\u003e@​israel-oye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/584\"\u003epallets-eco/flask-wtf#584\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/Zverik\"\u003e\u003ccode\u003e@​Zverik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/635\"\u003epallets-eco/flask-wtf#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/OmeirP\"\u003e\u003ccode\u003e@​OmeirP\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/650\"\u003epallets-eco/flask-wtf#650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kesara\"\u003e\u003ccode\u003e@​kesara\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/312\"\u003epallets-eco/flask-wtf#312\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thivolle-cazat-cedric\"\u003e\u003ccode\u003e@​thivolle-cazat-cedric\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/353\"\u003epallets-eco/flask-wtf#353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rauchy\"\u003e\u003ccode\u003e@​rauchy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/419\"\u003epallets-eco/flask-wtf#419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnt\"\u003e\u003ccode\u003e@​rnt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/509\"\u003epallets-eco/flask-wtf#509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/israel-oye\"\u003e\u003ccode\u003e@​israel-oye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/584\"\u003epallets-eco/flask-wtf#584\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pallets-eco/flask-wtf/compare/v1.2.2...v1.3.0\"\u003ehttps://github.com/pallets-eco/flask-wtf/compare/v1.2.2...v1.3.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/pallets-eco/flask-wtf/blob/main/docs/changes.rst\"\u003eflask-wtf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-23\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't read the whole uploaded files to know their size. :pr:\u003ccode\u003e635\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9. Start support for Python 3.14. :pr:\u003ccode\u003e648\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMigrate the project to uv. :pr:\u003ccode\u003e649\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow setting a \u003ccode\u003enonce\u003c/code\u003e on :class:\u003ccode\u003e~flask_wtf.recaptcha.RecaptchaField\u003c/code\u003e\n(string or zero-argument callable) for nonce-based Content Security\nPolicies. :pr:\u003ccode\u003e312\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecsrf_meta_tag()\u003c/code\u003e helper and \u003ccode\u003eWTF_CSRF_META_NAME\u003c/code\u003e setting to render\nthe CSRF token as an HTML \u003ccode\u003e\u0026lt;meta\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003eForward keyword arguments passed to the reCAPTCHA widget as HTML attributes\non the captcha \u003ccode\u003e\u0026lt;div\u0026gt;\u003c/code\u003e, with the field id used as a default \u003ccode\u003eid\u003c/code\u003e.\n:pr:\u003ccode\u003e353\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eapply_exemptions\u003c/code\u003e parameter to\n:meth:\u003ccode\u003e~flask_wtf.csrf.CSRFProtect.protect\u003c/code\u003e so \u003ccode\u003e@csrf.exempt\u003c/code\u003e keeps working\nwhen validation is triggered manually. :pr:\u003ccode\u003e419\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRECAPTCHA_ENABLED\u003c/code\u003e setting. :pr:\u003ccode\u003e509\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/63eb4d3bd55735fc136bdc6f23a90ca2b220b602\"\u003e\u003ccode\u003e63eb4d3\u003c/code\u003e\u003c/a\u003e chore: bump to v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/192ece3da0d98682c13e12574d7b1fc938bdd8e8\"\u003e\u003ccode\u003e192ece3\u003c/code\u003e\u003c/a\u003e Improve CSRF Documentation (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/1f8522d4a362ee66ab12a1ebf55379501dfcef0d\"\u003e\u003ccode\u003e1f8522d\u003c/code\u003e\u003c/a\u003e Adding RECAPTCHA_ENABLE to disable recaptcha (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/64b9215be16dc123f7eb187494dbba6bd0e5c2cd\"\u003e\u003ccode\u003e64b9215\u003c/code\u003e\u003c/a\u003e Respect exempts in CSRFProtect.protect() (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/adf674f80c5c5e55c050729e3ec086b4d6cb0f26\"\u003e\u003ccode\u003eadf674f\u003c/code\u003e\u003c/a\u003e widget support the kwargs to add custom html attributes (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/353\"\u003e#353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/ea1f797112f857c783dcd2c6e3954357df8e1bb7\"\u003e\u003ccode\u003eea1f797\u003c/code\u003e\u003c/a\u003e feat: CSRF meta tag helper (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/674\"\u003e#674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/412e3efda3703b141ca75afbcbf0538a7797b713\"\u003e\u003ccode\u003e412e3ef\u003c/code\u003e\u003c/a\u003e Allow nonce in reCaptcha (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/312\"\u003e#312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/a7b764a1fa8f4ea960d81104c364a2d29429e1b8\"\u003e\u003ccode\u003ea7b764a\u003c/code\u003e\u003c/a\u003e ReCaptcha field testing mode documentation (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/c053c0ec11560e68e558636962bbec1115a7ae2a\"\u003e\u003ccode\u003ec053c0e\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.1 to 9.0.3 (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/673\"\u003e#673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/ca2216cdf72717aa3c2355ba5f454080c78d9273\"\u003e\u003ccode\u003eca2216c\u003c/code\u003e\u003c/a\u003e chore(deps): bump uv from 0.9.11 to 0.11.6 (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/flask-wtf/compare/v1.2.2...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.3.2 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0 (2026-04-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove the \u003ccode\u003eatexit\u003c/code\u003e callback. This callback caused greenlet APIs\nto become unavailable far too soon during interpreter shutdown. Now\nthey remain available while all \u003ccode\u003eatexit\u003c/code\u003e callbacks run. Sometime\nafter \u003ccode\u003ePy_IsFinalizing\u003c/code\u003e becomes true, they may begin misbehaving.\nBecause the order in which C extensions are finalized is undefined,\nC extensions that are sensitive to this need to check the results of\nthat function before invoking greenlet APIs. As a convenience,\n\u003ccode\u003ePyGreenlet_GetCurrent\u003c/code\u003e sets an exception and returns \u003ccode\u003eNULL\u003c/code\u003e\nwhen this happens (and \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e begins returning\n\u003ccode\u003eNone\u003c/code\u003e); other greenlet C API functions have undefined behaviour.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.3.2...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hpack` from 4.1.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-hyper/hpack/blob/master/CHANGELOG.rst\"\u003ehpack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.0 (2026-06-22)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAPI Changes (Backward Incompatible)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.9 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for PyPy 3.9 has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eAPI Changes (Backward Compatible)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 has been added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHeaders marked as \u003ccode\u003esensitive\u003c/code\u003e will no longer log their value at DEBUG level. Instead a placeholder value of \u003ccode\u003eSENSITIVE_REDACTED\u003c/code\u003e is logged.\u003c/li\u003e\n\u003cli\u003eFixed perfect match missed for headers with empty values.\u003c/li\u003e\n\u003cli\u003eRestricted variable integer decoding to uint32 to prevent run-away computation. With thanks to \u003ccode\u003eHiroki Nishino\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _Hiroki Nishino: \u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/billionairestechnologies/BTALGO/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/billionairestechnologies%2FBTALGO/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"4764312048","node_id":"PR_kwDOShYNp87rlSXQ","number":16,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 15 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-29T01:18:59.000Z","updated_at":"2026-06-29T01:19:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":15,"packages":[{"name":"fastapi","old_version":"0.115.14","new_version":"0.138.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.32.1","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic-settings","old_version":"2.14.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.18.4","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"greenlet","old_version":"3.5.0","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"pyjwt","old_version":"2.12.1","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"numpy","old_version":"2.4.5","new_version":"2.5.0","repository_url":"https://github.com/numpy/numpy"},{"name":"prometheus-client","old_version":"0.21.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"typer","old_version":"0.15.3","new_version":"0.26.8","repository_url":"https://github.com/fastapi/typer"},{"name":"ruff","old_version":"0.8.6","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pip-audit","old_version":"2.10.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.14` | `0.138.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.32.1` | `0.49.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.1` | `2.14.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.18.5` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.0` | `3.5.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.1` | `2.13.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.5` | `2.5.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.1` | `0.25.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.26.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.8.6` | `0.15.20` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.10.0` | `2.10.1` |\n\n\nUpdates `fastapi` from 0.115.14 to 0.138.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: Add TestMu again. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15830\"\u003e#15830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15820\"\u003e#15820\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15799\"\u003e#15799\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b90c49aefad4958abdfbcacf9c2f816940a8f0e2\"\u003e\u003ccode\u003eb90c49a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15842\"\u003e#15842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f2f3df4852bf7cb29be1187806d95a0fdc7ea40\"\u003e\u003ccode\u003e1f2f3df\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0af003a85da454dcf6b6783e0ad3f0dd687e944f\"\u003e\u003ccode\u003e0af003a\u003c/code\u003e\u003c/a\u003e ♻️ Refactor Library Skills, make info easier to find for agents (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15841\"\u003e#15841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d5494c1f01796350fa082cf8a82b124e95162e9d\"\u003e\u003ccode\u003ed5494c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/82c527e714f16bf9e07202aff0fb91cada329844\"\u003e\u003ccode\u003e82c527e\u003c/code\u003e\u003c/a\u003e 👷 Simplify pull request workflow triggers (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15836\"\u003e#15836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3f28dbe6d84cdac19bdb2b41e1664981e37359ab\"\u003e\u003ccode\u003e3f28dbe\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6ea6b1f12e6d1a45c630a8fdf5d4c7c0959dad9\"\u003e\u003ccode\u003ef6ea6b1\u003c/code\u003e\u003c/a\u003e 👷 Update issue-manager to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15833\"\u003e#15833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/219ac634ab82b6321492ef97fb223b618ce13948\"\u003e\u003ccode\u003e219ac63\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fcc8e1f99431a0b381eaef03e07446e6975422b7\"\u003e\u003ccode\u003efcc8e1f\u003c/code\u003e\u003c/a\u003e ⬆️ Update issue-manager to 0.7.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15831\"\u003e#15831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/457f4c705c0287e49d7aa4ddec292db6185d16e3\"\u003e\u003ccode\u003e457f4c7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.14...0.138.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.32.1 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\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/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.32.1...0.49.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.14.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.20 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.31\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003eKludex/python-multipart#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003eKludex/python-multipart#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate Content-Length is non-negative in parse_form by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003eKludex/python-multipart#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.30\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTreat only \u003ccode\u003e\u0026amp;\u003c/code\u003e as the urlencoded field separator by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003eKludex/python-multipart#290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231 extended parameters in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003eKludex/python-multipart#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.29\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/manunio\"\u003e\u003ccode\u003e@​manunio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003eKludex/python-multipart#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePass parse offsets via constructors by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003eKludex/python-multipart#268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multipart header limits by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003eKludex/python-multipart#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSkip preamble before first multipart boundary by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/262\"\u003eKludex/python-multipart#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilently discard epilogue data after the closing boundary by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/259\"\u003eKludex/python-multipart#259\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/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.31 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003e#296\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eContent-Length\u003c/code\u003e is non-negative in \u003ccode\u003eparse_form\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003e#297\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30 (2026-05-31)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParse \u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e bodies per the WHATWG URL standard, treating only \u003ccode\u003e\u0026amp;\u003c/code\u003e as a field separator \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003e#290\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231/5987 extended parameters (\u003ccode\u003ename*\u003c/code\u003e, \u003ccode\u003efilename*\u003c/code\u003e) in \u003ccode\u003eparse_options_header\u003c/code\u003e, keeping the plain parameter authoritative per \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7578#section-4.2\"\u003eRFC 7578 §4.2\u003c/a\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003e#291\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29 (2026-05-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003e#270\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.27 (2026-04-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multipart header limits \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003e#267\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePass parse offsets via constructors \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003e#268\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.26 (2026-04-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSkip preamble before the first multipart boundary more efficiently \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/262\"\u003e#262\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSilently discard epilogue data after the closing multipart boundary \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/259\"\u003e#259\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.25 (2026-04-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd MIME content type info to \u003ccode\u003eFile\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/143\"\u003e#143\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eHandle CTE values case-insensitively \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/258\"\u003e#258\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRemove custom \u003ccode\u003eFormParser\u003c/code\u003e classes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/257\"\u003e#257\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eUPLOAD_DELETE_TMP\u003c/code\u003e to \u003ccode\u003eFormParser\u003c/code\u003e config \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/254\"\u003e#254\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003efield_end\u003c/code\u003e for trailing bare field names on finalize \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/230\"\u003e#230\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eHandle multipart headers case-insensitively \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/252\"\u003e#252\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eApply Apache-2.0 properly \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/247\"\u003e#247\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.24 (2026-04-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eValidate \u003ccode\u003echunk_size\u003c/code\u003e in \u003ccode\u003eparse_form()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/244\"\u003e#244\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.23 (2026-04-05)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/4cffc68a165f7a6f6b7756ce006fabf07a05b7a4\"\u003e\u003ccode\u003e4cffc68\u003c/code\u003e\u003c/a\u003e Version 0.0.31 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/c814948acf509cef7881fa75c969969b19239bbf\"\u003e\u003ccode\u003ec814948\u003c/code\u003e\u003c/a\u003e Reject negative \u003ccode\u003eContent-Length\u003c/code\u003e in \u003ccode\u003eparse_form\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6b837d47bc68826ed5cbbcb50c6c6a6093444494\"\u003e\u003ccode\u003e6b837d4\u003c/code\u003e\u003c/a\u003e Bound header field name size before validating (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/e0c4f9df2e737d1663fbbdd6563f80613a2089f9\"\u003e\u003ccode\u003ee0c4f9d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b8a01bb683e8e8675fdb5d831b206a478c8215aa\"\u003e\u003ccode\u003eb8a01bb\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6732164f30c58e28589a1e22213d2f6b8c6bad9f\"\u003e\u003ccode\u003e6732164\u003c/code\u003e\u003c/a\u003e Speed up multipart header parsing and callback dispatch (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.32\"\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.49 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `alembic` from 1.18.4 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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 `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.5.0 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.0...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.12.1 to 2.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.13.0\u003c/h2\u003e\n\u003ch1\u003ePyJWT 2.13.0 — Security Release\u003c/h1\u003e\n\u003cp\u003eThis release bundles five security fixes plus three additional hardening / spec-compliance changes. We recommend all users upgrade.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\"\u003e\u003ccode\u003eGHSA-xgmm-8j9v-c9wx\u003c/code\u003e\u003c/a\u003e — JWK JSON accepted as HMAC secret (algorithm confusion).\u003c/strong\u003e \u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e previously rejected PEM- and SSH-formatted asymmetric keys but did not catch a JWK passed as a raw JSON string. In a verifier configured with both symmetric and asymmetric algorithms in \u003ccode\u003ealgorithms=[…]\u003c/code\u003e and a raw-JSON JWK as the key, an attacker could forge HS256 tokens using the JWK text as the HMAC secret. The guard has been extended to reject any JWK-shaped JSON. \u003cem\u003eReported by \u003ca href=\"https://github.com/aradona91\"\u003e\u003ccode\u003e@​aradona91\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\"\u003e\u003ccode\u003eGHSA-jq35-7prp-9v3f\u003c/code\u003e\u003c/a\u003e — Algorithm allow-list bypass with \u003ccode\u003ePyJWK\u003c/code\u003e / \u003ccode\u003ePyJWKClient\u003c/code\u003e.\u003c/strong\u003e When verifying with a \u003ccode\u003ePyJWK\u003c/code\u003e, the caller's \u003ccode\u003ealgorithms=[…]\u003c/code\u003e allow-list was checked against the token header \u003ccode\u003ealg\u003c/code\u003e as a string only; actual verification used the algorithm bound to the \u003ccode\u003ePyJWK\u003c/code\u003e. An attacker who controlled a registered JWKS key could sign with one algorithm and advertise another on the header. PyJWT now requires the token header \u003ccode\u003ealg\u003c/code\u003e to match the \u003ccode\u003ePyJWK\u003c/code\u003e's algorithm before verification. \u003cem\u003eReported by \u003ca href=\"https://github.com/sushi-gif\"\u003e\u003ccode\u003e@​sushi-gif\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\"\u003e\u003ccode\u003eGHSA-w7vc-732c-9m39\u003c/code\u003e\u003c/a\u003e — DoS via base64 decode of unused payload segment when \u003ccode\u003eb64=false\u003c/code\u003e.\u003c/strong\u003e For detached-payload JWS (\u003ccode\u003eb64=false\u003c/code\u003e), the compact-form payload segment was base64-decoded before being discarded in favor of the caller-supplied \u003ccode\u003edetached_payload\u003c/code\u003e. An attacker could inflate the unused segment to force CPU + memory cost without holding a valid signature. The segment is now required to be empty per RFC 7515 Appendix F, and is no longer decoded. \u003cem\u003eReported by \u003ca href=\"https://github.com/thesmartshadow\"\u003e\u003ccode\u003e@​thesmartshadow\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\"\u003e\u003ccode\u003eGHSA-993g-76c3-p5m4\u003c/code\u003e\u003c/a\u003e — \u003ccode\u003ePyJWKClient\u003c/code\u003e accepts non-HTTP(S) URIs.\u003c/strong\u003e \u003ccode\u003ePyJWKClient.fetch_data\u003c/code\u003e passed its URI to \u003ccode\u003eurllib.request.urlopen\u003c/code\u003e, which by default also handles \u003ccode\u003efile://\u003c/code\u003e, \u003ccode\u003eftp://\u003c/code\u003e, and \u003ccode\u003edata:\u003c/code\u003e schemes. An application that fed an attacker-influenced URI into \u003ccode\u003ePyJWKClient\u003c/code\u003e could be coerced into reading local files or reaching other unintended schemes. \u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects any URI whose scheme isn't \u003ccode\u003ehttp\u003c/code\u003e or \u003ccode\u003ehttps\u003c/code\u003e. \u003cem\u003eReported by \u003ca href=\"https://github.com/KEIJOT\"\u003e\u003ccode\u003e@​KEIJOT\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8\"\u003e\u003ccode\u003eGHSA-fhv5-28vv-h8m8\u003c/code\u003e\u003c/a\u003e — \u003ccode\u003ePyJWKClient\u003c/code\u003e cache wiped on fetch error.\u003c/strong\u003e A \u003ccode\u003efinally\u003c/code\u003e-block \u003ccode\u003eput(jwk_set=None)\u003c/code\u003e cleared the JWK Set cache whenever a fetch raised, turning a transient JWKS-endpoint outage into application-wide auth failure. The cache write was moved into the success path; transient errors no longer evict valid cached keys. \u003cem\u003eReported by \u003ca href=\"https://github.com/eddieran\"\u003e\u003ccode\u003e@​eddieran\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject empty HMAC keys outright in \u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e with \u003ccode\u003eInvalidKeyError\u003c/code\u003e instead of accepting them with only a warning. Defends against the \u003ccode\u003eos.getenv(\u0026quot;JWT_SECRET\u0026quot;, \u0026quot;\u0026quot;)\u003c/code\u003e footgun. \u003cem\u003eThanks to \u003ca href=\"https://github.com/SnailSploit\"\u003e\u003ccode\u003e@​SnailSploit\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/spartan8806\"\u003e\u003ccode\u003e@​spartan8806\u003c/code\u003e\u003c/a\u003e for the reports.\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003eForward per-call \u003ccode\u003eoptions\u003c/code\u003e (including \u003ccode\u003eenforce_minimum_key_length\u003c/code\u003e) from \u003ccode\u003ePyJWT.decode\u003c/code\u003e through to \u003ccode\u003ePyJWS._verify_signature\u003c/code\u003e. The option was previously silently dropped between the two layers, so it only took effect when set on the \u003ccode\u003ePyJWT\u003c/code\u003e instance. \u003cem\u003eThanks to \u003ca href=\"https://github.com/WLUB\"\u003e\u003ccode\u003e@​WLUB\u003c/code\u003e\u003c/a\u003e for the report.\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRFC 7797 §3 compliance for \u003ccode\u003eb64=false\u003c/code\u003e:\u003c/strong\u003e the encoder now auto-adds \u003ccode\u003e\u0026quot;b64\u0026quot;\u003c/code\u003e to \u003ccode\u003ecrit\u003c/code\u003e, and the decoder rejects tokens that set \u003ccode\u003eb64=false\u003c/code\u003e without listing it in \u003ccode\u003ecrit\u003c/code\u003e. \u003cem\u003eThanks to \u003ca href=\"https://github.com/MachineLearning-Nerd\"\u003e\u003ccode\u003e@​MachineLearning-Nerd\u003c/code\u003e\u003c/a\u003e for the report.\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate the \u003ccode\u003edev\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, and \u003ccode\u003etests\u003c/code\u003e package extras to dependency groups, by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1152\"\u003e#1152\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade notes\u003c/h2\u003e\n\u003cp\u003eMost fixes are invisible to correctly-configured callers. A few behavioral changes you may encounter:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEmpty HMAC keys now raise.\u003c/strong\u003e If your app passed \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e or \u003ccode\u003eb\u0026quot;\u0026quot;\u003c/code\u003e as a secret (often via a missing env var, e.g. \u003ccode\u003eos.getenv(\u0026quot;JWT_SECRET\u0026quot;, \u0026quot;\u0026quot;)\u003c/code\u003e), \u003ccode\u003eencode\u003c/code\u003e/\u003ccode\u003edecode\u003c/code\u003e will now raise \u003ccode\u003eInvalidKeyError\u003c/code\u003e. This is the intended behavior — fix the configuration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePyJWK\u003c/code\u003e decoding now requires the token's \u003ccode\u003ealg\u003c/code\u003e to match the JWK's algorithm.\u003c/strong\u003e Previously a mismatch was silently honored if the header \u003ccode\u003ealg\u003c/code\u003e appeared in the allow-list. Tokens that relied on this mismatch will now fail with \u003ccode\u003eInvalidAlgorithmError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects non-HTTP(S) URIs at construction time.\u003c/strong\u003e Tests or dev environments that fetched JWKS from \u003ccode\u003efile://\u003c/code\u003e URIs need to switch to a local HTTP server or load the JWKS by other means (e.g. construct \u003ccode\u003ePyJWKSet.from_dict(...)\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eb64=false\u003c/code\u003e tokens are now strictly RFC 7515 / 7797 compliant.\u003c/strong\u003e Tokens with a non-empty compact-form payload segment, or that omit \u003ccode\u003e\u0026quot;b64\u0026quot;\u003c/code\u003e from \u003ccode\u003ecrit\u003c/code\u003e, will be rejected. PyJWT-produced tokens always satisfy both invariants, so round-trips through PyJWT are unaffected.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eenforce_minimum_key_length\u003c/code\u003e set per-call now takes effect.\u003c/strong\u003e Callers who passed \u003ccode\u003eoptions={\u0026quot;enforce_minimum_key_length\u0026quot;: True}\u003c/code\u003e to \u003ccode\u003ejwt.decode()\u003c/code\u003e previously got no enforcement; they will now get \u003ccode\u003eInvalidKeyError\u003c/code\u003e on undersized keys, as documented.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.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/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.13.0 \u0026lt;https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eSecurity\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Reject JWK JSON documents passed as raw HMAC secrets in\n  ``HMACAlgorithm.prepare_key`` to close an algorithm-confusion gap that\n  the existing PEM/SSH guard did not cover. Reported by @aradona91 in\n  `GHSA-xgmm-8j9v-c9wx \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\u0026gt;`__.\n- Bind the JWT header ``alg`` to ``PyJWK.algorithm_name`` during\n  verification so the caller's ``algorithms=[...]`` allow-list cannot be\n  bypassed when decoding with a ``PyJWK`` / ``PyJWKClient`` key. Reported\n  by @sushi-gif in `GHSA-jq35-7prp-9v3f \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\u0026gt;`__.\n- Reject non-``http(s)`` URI schemes in ``PyJWKClient`` so attacker-\n  influenced URIs cannot read local files or reach unintended schemes via\n  urllib's default ``file://`` / ``ftp://`` / ``data:`` handlers. Reported\n  by @KEIJOT in `GHSA-993g-76c3-p5m4 \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\u0026gt;`__.\n- Preserve the cached JWK Set on fetch errors in ``PyJWKClient.fetch_data``.\n  The previous ``finally``-block ``put(None)`` pattern cleared the cache\n  on any transient outage, turning one bad JWKS request into application-\n  wide auth failure. Reported by @eddieran in `GHSA-fhv5-28vv-h8m8 \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8\u0026gt;`__.\n- Skip the unconditional base64 decode of the compact-form payload segment\n  when ``b64=false`` is set in the protected header, and require that\n  segment to be empty (RFC 7515 Appendix F detached form). Closes an\n  unauthenticated DoS amplifier. Reported by @thesmartshadow in\n  `GHSA-w7vc-732c-9m39 \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\u0026gt;`__.\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Reject empty HMAC keys outright in ``HMACAlgorithm.prepare_key`` with\n  ``InvalidKeyError`` instead of accepting them with only a warning.\n  Thanks to @SnailSploit and @spartan8806 for independently flagging the\n  footgun.\n- Forward per-call ``options`` (including ``enforce_minimum_key_length``)\n  from ``PyJWT.decode`` through to ``PyJWS._verify_signature`` so the\n  option actually takes effect when set at the call site rather than only\n  on the ``PyJWT`` instance. Thanks to @WLUB for the report.\n- RFC 7797 §3 compliance for ``b64=false``: the encoder now auto-adds\n  ``\u0026amp;quot;b64\u0026amp;quot;`` to the ``crit`` header parameter, and the decoder rejects\n  tokens that set ``b64=false`` without listing it in ``crit``. Thanks to\n  @MachineLearning-Nerd for the report.\n\nChanged\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate the \u003ccode\u003edev\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, and \u003ccode\u003etests\u003c/code\u003e package extras to dependency groups by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ccode\u003e[#1152](https://github.com/jpadilla/pyjwt/issues/1152) \u0026amp;lt;https://github.com/jpadilla/pyjwt/pull/1152\u0026amp;gt;\u003c/code\u003e__\n\u003c/code\u003e\u003c/pre\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/jpadilla/pyjwt/commit/7144e4534c34810f4525dc4578a32addd8212cff\"\u003e\u003ccode\u003e7144e45\u003c/code\u003e\u003c/a\u003e Apply ruff format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/d2f4bec4963897c0ef96ef64a875894f2c8542ab\"\u003e\u003ccode\u003ed2f4bec\u003c/code\u003e\u003c/a\u003e Restore \u003ccode\u003ecast()\u003c/code\u003e calls with cross-version \u003ccode\u003etype: ignore\u003c/code\u003e for \u003ccode\u003eprepare_key\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/22f478cebddd8294259c30f037ecb92b0b348774\"\u003e\u003ccode\u003e22f478c\u003c/code\u003e\u003c/a\u003e Remove redundant casts in \u003ccode\u003eRSAAlgorithm.prepare_key\u003c/code\u003e and `ECAlgorithm.prepare...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/95791b1759b8aa4f2203575d344d5c78564cdc81\"\u003e\u003ccode\u003e95791b1\u003c/code\u003e\u003c/a\u003e Bundle security fixes and hardening into 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/dcc27a9d3182a2349c30b160758785c6ce7a6508\"\u003e\u003ccode\u003edcc27a9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/9d08a9a1896845ed8eaf88e6f6ac61e5800c3e7a\"\u003e\u003ccode\u003e9d08a9a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1146\"\u003e#1146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/b87c10014d4109f0214fea188d00faaaf8a80e64\"\u003e\u003ccode\u003eb87c100\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5 to 6 (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1154\"\u003e#1154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/40e3147eb5f790d8d041772e5fc00728a176c812\"\u003e\u003ccode\u003e40e3147\u003c/code\u003e\u003c/a\u003e Migrate development extras to dependency groups (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release adds \u003ca href=\"https://narwhals-dev.github.io/narwhals/\"\u003enarwhals\u003c/a\u003e as a new dependency that will help to improve dataframe interoperability across the project.\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/77def0ed6e3beab57244885d2a584470e96c103d\"\u003e\u003ccode\u003e77def0e\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ee7c0b0e34ffe0f5eff8c7aeda49783f70bd9faa\"\u003e\u003ccode\u003eee7c0b0\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/3d7fb048fc5f05555a202d2b24307628841904b5\"\u003e\u003ccode\u003e3d7fb04\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8954e7baf1f827320b17817f0ab76d025f5e6421\"\u003e\u003ccode\u003e8954e7b\u003c/code\u003e\u003c/a\u003e DOC Release highlights for 1.9 (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34147\"\u003e#34147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73a3eab9d7bc58b695e4da8765044815b90b8dee\"\u003e\u003ccode\u003e73a3eab\u003c/code\u003e\u003c/a\u003e Fix: Array-API - avoid failing for numpy fit + predict with sparse or array-l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8839aaeb2fa2a4e3ad2f0a5a69b5f427cffe1dd1\"\u003e\u003ccode\u003e8839aae\u003c/code\u003e\u003c/a\u003e DOC Thread-safety requirement for open_listener message consumer callback (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/4d2476a4e2acc9429b96d8ee80218a96d24c2bde\"\u003e\u003ccode\u003e4d2476a\u003c/code\u003e\u003c/a\u003e DOC Refactor array API docs page (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34054\"\u003e#34054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f9f812fe6a4ea54c482da6b195773917b636365e\"\u003e\u003ccode\u003ef9f812f\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d779dc335a31d74ef472003d9012066f07ee8834\"\u003e\u003ccode\u003ed779dc3\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/6a03cf0906987ce77b37e780ccdebbe3f85e9235\"\u003e\u003ccode\u003e6a03cf0\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.8.0...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.5 to 2.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0 (June 21, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.5.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumpy 2.5.0 is a transitional release. It drops support for Python 3.11,\nmarking the end of distutils, and expires a large number of deprecations made\nin the 2.0.x release. It al...\n\n_Description has been truncated_","html_url":"https://github.com/AlexMatei1/honey-strike/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexMatei1%2Fhoney-strike/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"4715141486","node_id":"PR_kwDOQKRmjs7pFxWt","number":46,"state":"open","title":"chore(deps)(deps): bump sqlalchemy from 2.0.50 to 2.0.51","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-22T09:12:31.000Z","updated_at":"2026-06-22T09:12:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps)","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.50\u0026new-version=2.0.51)](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/CrashBytes/enterprise-ai-agent/pull/46","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrashBytes%2Fenterprise-ai-agent/issues/46","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/46/packages"},{"uuid":"4712754408","node_id":"PR_kwDOQzd4z87o99KR","number":504,"state":"open","title":"build(deps): bump sqlalchemy from 2.0.25 to 2.0.51 in /backend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-22T01:54:36.000Z","updated_at":"2026-06-22T01:54:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"sqlalchemy","old_version":"2.0.25","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.25 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.25\u0026new-version=2.0.51)](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/w4g0n/innova-cx/pull/504","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/w4g0n%2Finnova-cx/issues/504","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/504/packages"},{"uuid":"4712521442","node_id":"PR_kwDOQFZ20c7o9OLl","number":108,"state":"open","title":"chore(deps): bump the python-minor group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-22T00:38:58.000Z","updated_at":"2026-06-22T00:39:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor","update_count":27,"packages":[{"name":"fastapi","old_version":"0.135.2","new_version":"0.138.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"githubkit-schemas","old_version":"26.6.14","new_version":"26.6.20","repository_url":"https://github.com/yanyongyu/githubkit"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"sentry-sdk","old_version":"2.54.0","new_version":"2.63.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"starlette","old_version":"1.0.1","new_version":"1.3.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"filelock","old_version":"3.28.0","new_version":"3.29.4","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"pytest","old_version":"9.0.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.18","repository_url":"https://github.com/astral-sh/ruff"},{"name":"anyio","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"click","old_version":"8.3.1","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.15","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"2.0.1","new_version":"2.2.2","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"coverage","old_version":"7.12.0","new_version":"7.14.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"librt","old_version":"0.7.5","new_version":"0.11.0","repository_url":"https://github.com/mypyc/librt"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 27 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.2` | `0.138.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.49.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.51` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.2` |\n| [githubkit-schemas](https://github.com/yanyongyu/githubkit) | `26.6.14` | `26.6.20` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.54.0` | `2.63.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.1` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.28.0` | `3.29.4` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.18` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.0` | `4.14.0` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.4.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.18` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.47.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.0.1` | `2.2.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.12.0` | `7.14.2` |\n| [librt](https://github.com/mypyc/librt) | `0.7.5` | `0.11.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n\n\nUpdates `fastapi` from 0.135.2 to 0.138.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15759\"\u003e#15759\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15757\"\u003e#15757\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15756\"\u003e#15756\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15755\"\u003e#15755\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15754\"\u003e#15754\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15753\"\u003e#15753\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15752\"\u003e#15752\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15751\"\u003e#15751\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15758\"\u003e#15758\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Update sponsors: add BairesDev. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15787\"\u003e#15787\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Update sponsors script to simplify previews. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15786\"\u003e#15786\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b83b0d409009c8de9df4070fe163838b1a700c7\"\u003e\u003ccode\u003e4b83b0d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15808\"\u003e#15808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/041cb0cdfa2d0f705d14ed07c2c2e0f92ef5f32c\"\u003e\u003ccode\u003e041cb0c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/10393846ede7a2947cec594d15a43f813001cab4\"\u003e\u003ccode\u003e1039384\u003c/code\u003e\u003c/a\u003e 📝 Fix typo in release notes (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15807\"\u003e#15807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0303491b69ff84a4632c0314e6db4df74f2f93f9\"\u003e\u003ccode\u003e0303491\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/190f6e2033c8b886b25027be284d8c8c1893f28c\"\u003e\u003ccode\u003e190f6e2\u003c/code\u003e\u003c/a\u003e 📝 Add Frontend instructions to Agent Library Skill (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15805\"\u003e#15805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/17945e5ab7f25234340c152a40d232a98857e079\"\u003e\u003ccode\u003e17945e5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2260afaf433103c8104b34d256cf0b96b058823b\"\u003e\u003ccode\u003e2260afa\u003c/code\u003e\u003c/a\u003e 🐛 Fix failing test, update format for raised errors (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15804\"\u003e#15804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0cd5001d0ef80a07e2d775c5c75522391a3e06d7\"\u003e\u003ccode\u003e0cd5001\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7cb1ab6264bc03319832f553730b511192a0c0d3\"\u003e\u003ccode\u003e7cb1ab6\u003c/code\u003e\u003c/a\u003e 👷 Fix test-alls-green (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15803\"\u003e#15803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9c7eceb00ff6e1d37980954418f7c9dab30a4cd5\"\u003e\u003ccode\u003e9c7eceb\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.2...0.138.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.41.0 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\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/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.49.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.27 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.31\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003eKludex/python-multipart#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003eKludex/python-multipart#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate Content-Length is non-negative in parse_form by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003eKludex/python-multipart#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.30\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTreat only \u003ccode\u003e\u0026amp;\u003c/code\u003e as the urlencoded field separator by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003eKludex/python-multipart#290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231 extended parameters in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003eKludex/python-multipart#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.29\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/manunio\"\u003e\u003ccode\u003e@​manunio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003eKludex/python-multipart#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.31 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003e#296\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eContent-Length\u003c/code\u003e is non-negative in \u003ccode\u003eparse_form\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003e#297\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30 (2026-05-31)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParse \u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e bodies per the WHATWG URL standard, treating only \u003ccode\u003e\u0026amp;\u003c/code\u003e as a field separator \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003e#290\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231/5987 extended parameters (\u003ccode\u003ename*\u003c/code\u003e, \u003ccode\u003efilename*\u003c/code\u003e) in \u003ccode\u003eparse_options_header\u003c/code\u003e, keeping the plain parameter authoritative per \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7578#section-4.2\"\u003eRFC 7578 §4.2\u003c/a\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003e#291\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29 (2026-05-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003e#270\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/4cffc68a165f7a6f6b7756ce006fabf07a05b7a4\"\u003e\u003ccode\u003e4cffc68\u003c/code\u003e\u003c/a\u003e Version 0.0.31 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/c814948acf509cef7881fa75c969969b19239bbf\"\u003e\u003ccode\u003ec814948\u003c/code\u003e\u003c/a\u003e Reject negative \u003ccode\u003eContent-Length\u003c/code\u003e in \u003ccode\u003eparse_form\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6b837d47bc68826ed5cbbcb50c6c6a6093444494\"\u003e\u003ccode\u003e6b837d4\u003c/code\u003e\u003c/a\u003e Bound header field name size before validating (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/e0c4f9df2e737d1663fbbdd6563f80613a2089f9\"\u003e\u003ccode\u003ee0c4f9d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b8a01bb683e8e8675fdb5d831b206a478c8215aa\"\u003e\u003ccode\u003eb8a01bb\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6732164f30c58e28589a1e22213d2f6b8c6bad9f\"\u003e\u003ccode\u003e6732164\u003c/code\u003e\u003c/a\u003e Speed up multipart header parsing and callback dispatch (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.32\"\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.48 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `greenlet` from 3.3.2 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0 (2026-04-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove the \u003ccode\u003eatexit\u003c/code\u003e callback. This callback caused greenlet APIs\nto become unavailable far too soon during interpreter shutdown. Now\nthey remain available while all \u003ccode\u003eatexit\u003c/code\u003e callbacks run. Sometime\nafter \u003ccode\u003ePy_IsFinalizing\u003c/code\u003e becomes true, they may begin misbehaving.\nBecause the order in which C extensions are finalized is undefined,\nC extensions that are sensitive to this need to check the results of\nthat function before invoking greenlet APIs. As a convenience,\n\u003ccode\u003ePyGreenlet_GetCurrent\u003c/code\u003e sets an exception and returns \u003ccode\u003eNULL\u003c/code\u003e\nwhen this happens (and \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e begins returning\n\u003ccode\u003eNone\u003c/code\u003e); other greenlet C API functions have undefined behaviour.\nMethods invoked directly on pre-existing \u003ccode\u003egreenlet.greenlet\u003c/code\u003e\nobjects will continue to function at least until the greenlet C\nextension has been garbage collected and finalized.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003ePR 508 \u0026lt;https://github.com/python-greenlet/greenlet/pull/508\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0 (2026-04-08)\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/b0aac05734e9e41d4a592e0c913846990a9c7c24\"\u003e\u003ccode\u003eb0aac05\u003c/code\u003e\u003c/a\u003e set fail-fast=false and if condition correctly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/2f87f316613d401bbf1b1653595654654e572550\"\u003e\u003ccode\u003e2f87f31\u003c/code\u003e\u003c/a\u003e rename to ignores_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/28bbde3de939acefe8e9d72fb179115b81392a87\"\u003e\u003ccode\u003e28bbde3\u003c/code\u003e\u003c/a\u003e add comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/35206b8dc536cfe92c09509432b4a301b5fede5f\"\u003e\u003ccode\u003e35206b8\u003c/code\u003e\u003c/a\u003e fix test and restrict tp_is_gc \u0026lt; 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/abdbab55b03334700fd264e523ac75926daba043\"\u003e\u003ccode\u003eabdbab5\u003c/code\u003e\u003c/a\u003e fix gil enabled\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.3.2...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `githubkit-schemas` from 26.6.14 to 26.6.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yanyongyu/githubkit/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.13.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\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/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slowapi` from 0.1.9 to 0.1.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/laurents/slowapi/releases\"\u003eslowapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.1.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update warn to warning py3.11 deprecation by \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: allow Requests to be sent to exempt_when by \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: drop python 3.7 and 3.8 from CI checks by \u003ca href=\"https://github.com/laurentS\"\u003e\u003ccode\u003e@​laurentS\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/238\"\u003elaurentS/slowapi#238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: prepare 0.1.10 release by \u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\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/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\"\u003ehttps://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\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/laurentS/slowapi/blob/master/CHANGELOG.md\"\u003eslowapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.10] - 2026-06-13\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: allow usage of the request object in the except_when function (thanks \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded more test exemption logic (thanks \u003ca href=\"https://github.com/colin99\"\u003e\u003ccode\u003e@​colin99\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix logger warning for Python 3.11 deprecation  (thanks \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\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/laurentS/slowapi/commit/75799a3ec9498af10110068190356f704f838fe3\"\u003e\u003ccode\u003e75799a3\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/6f22eabc90a793d8c8459b6a8115c6f7fbb05bc5\"\u003e\u003ccode\u003e6f22eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/212\"\u003e#212\u003c/a\u003e from ecly/release-v0.1.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/5e2b9c108f79471fc96a5152bb69774894660cd1\"\u003e\u003ccode\u003e5e2b9c1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/238\"\u003e#238\u003c/a\u003e from laurentS/drop-old-python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a83ec7211ea664fcb65580a386845832c112892d\"\u003e\u003ccode\u003ea83ec72\u003c/code\u003e\u003c/a\u003e Update README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/d1a20b6a4e0ba063bdb2160379be531c385c40a3\"\u003e\u003ccode\u003ed1a20b6\u003c/code\u003e\u003c/a\u003e Drop python 3.7 and 3.8 from CI checks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/8bf8b2ec55677aa3c9e0f9bed9f1a48f0b0b8d2e\"\u003e\u003ccode\u003e8bf8b2e\u003c/code\u003e\u003c/a\u003e Make exempt_when with request backwards compatible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/eaf5ba76cd8657693bcec6dec281a35053b1164b\"\u003e\u003ccode\u003eeaf5ba7\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a72bcc66597f620f04bf5be3676e40ed308d3a6a\"\u003e\u003ccode\u003ea72bcc6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/160\"\u003e#160\u003c/a\u003e from colin99d/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/42330fcddbf5ce22d18622ca14772cff256c2e74\"\u003e\u003ccode\u003e42330fc\u003c/code\u003e\u003c/a\u003e Merge branch 'laurentS:master' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/91145c087d658b6c3404935cd02155e291c2682b\"\u003e\u003ccode\u003e91145c0\u003c/code\u003e\u003c/a\u003e Fixed mypy error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/laurents/slowapi/compare/v0.1.9...v0.1.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.54.0 to 2.63.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.63.0\u003c/h2\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eFastapi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent double wrapping of sync handlers on FastAPI \u0026gt;= 0.137 by \u003ca href=\"https://github.com/jhonny-on\"\u003e\u003ccode\u003e@​jhonny-on\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6569\"\u003e#6569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse effective_route_context path for prefixed routers by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6572\"\u003e#6572\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(asgi) Gate query string and client IP behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6501\"\u003e#6501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(serializer) Avoid creating reference cycles on every call by \u003ca href=\"https://github.com/Malkiz223\"\u003e\u003ccode\u003e@​Malkiz223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6563\"\u003e#6563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(user) Set \u003ccode\u003euser.ip_address\u003c/code\u003e on telemetry if present by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6555\"\u003e#6555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove 0000 trace_id fallbacks by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6570\"\u003e#6570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMANIFEST.in: Graft tests directory. by \u003ca href=\"https://github.com/charlesroelli\"\u003e\u003ccode\u003e@​charlesroelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6237\"\u003e#6237\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(fastapi) Verify request info capture with POST endpoints by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6287\"\u003e#6287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(starlette) Verify request info capture with POST endpoints by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6269\"\u003e#6269\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.62.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd integration for \u003ccode\u003eaiomysql\u003c/code\u003e by \u003ca href=\"https://github.com/tonal\"\u003e\u003ccode\u003e@​tonal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/4703\"\u003e#4703\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe're adding support for the \u003ccode\u003eaiomysql\u003c/code\u003e package. To enable the integration, add it to your \u003ccode\u003eintegrations\u003c/code\u003e list:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.aiomysql import AioMySQLIntegration\n\u003cp\u003esentry_sdk.init(\ntraces_sample_rate=1.0,\nintegrations=[AioMySQLIntegration()],\n)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport HTTPX2 by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/Dashtid/portfolio-site/pull/108","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dashtid%2Fportfolio-site/issues/108","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/108/packages"},{"uuid":"4710115532","node_id":"PR_kwDOF6e2dM7o11U1","number":4676,"state":"open","title":"chore(deps): update sqlalchemy requirement from \u003e=2.0.50 to \u003e=2.0.51 in /e2e-python","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-21T10:12:38.000Z","updated_at":"2026-06-21T10:17:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"sqlalchemy","old_version":"\u003e=2.0.50","new_version":"\u003e=2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/e2e-python","ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\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/ArcadeData/arcadedb/pull/4676","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcadeData%2Farcadedb/issues/4676","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4676/packages"},{"uuid":"4704616621","node_id":"PR_kwDOSMAT387okpt2","number":41,"state":"closed","title":"chore(deps): Bump the backend-patch-minor group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-27T01:25:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-20T01:28:48.000Z","updated_at":"2026-06-27T01:25:51.000Z","time_to_close":604621,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"backend-patch-minor","update_count":27,"packages":[{"name":"fastapi","old_version":"0.136.1","new_version":"0.138.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"scipy","old_version":"1.17.1","new_version":"1.18.0","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.44.1","new_version":"0.52.0","repository_url":"https://github.com/shap/shap"},{"name":"tqdm","old_version":"4.67.3","new_version":"4.68.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"matplotlib","old_version":"3.10.9","new_version":"3.11.0","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"orjson","old_version":"3.11.8","new_version":"3.11.9","repository_url":"https://github.com/ijl/orjson"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"anndata","old_version":"0.12.11","new_version":"0.12.17","repository_url":"https://github.com/scverse/anndata"},{"name":"pydantic-settings","old_version":"2.14.0","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"torch","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"notebook","old_version":"7.5.5","new_version":"7.6.0","repository_url":"https://github.com/jupyter/notebook"},{"name":"boto3","old_version":"1.42.96","new_version":"1.43.34","repository_url":"https://github.com/boto/boto3"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.30.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"msgpack","old_version":"1.1.2","new_version":"1.2.1","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"pysam","old_version":"0.23.3","new_version":"0.24.0","repository_url":"https://github.com/pysam-developers/pysam"},{"name":"pika","old_version":"1.3.2","new_version":"1.4.1","repository_url":"https://github.com/pika/pika"},{"name":"bokeh","old_version":"3.9.0","new_version":"3.9.1","repository_url":"https://github.com/bokeh/bokeh"},{"name":"streamlit","old_version":"1.56.0","new_version":"1.58.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"locust","old_version":"2.43.4","new_version":"2.44.4","repository_url":"https://github.com/locustio/locust"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.1","repository_url":"https://github.com/coveragepy/coveragepy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-patch-minor group with 27 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.138.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.49.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.3` | `2.13.4` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [scipy](https://github.com/scipy/scipy) | `1.17.1` | `1.18.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.0` |\n| [shap](https://github.com/shap/shap) | `0.44.1` | `0.52.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.3` | `4.68.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.9` | `3.11.0` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.8` | `3.11.9` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [anndata](https://github.com/scverse/anndata) | `0.12.11` | `0.12.17` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.0` | `2.14.2` |\n| [torch](https://github.com/pytorch/pytorch) | `2.11.0` | `2.12.1` |\n| [notebook](https://github.com/jupyter/notebook) | `7.5.5` | `7.6.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.96` | `1.43.34` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.30.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.2` | `1.2.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [pysam](https://github.com/pysam-developers/pysam) | `0.23.3` | `0.24.0` |\n| [pika](https://github.com/pika/pika) | `1.3.2` | `1.4.1` |\n| [bokeh](https://github.com/bokeh/bokeh) | `3.9.0` | `3.9.1` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.56.0` | `1.58.0` |\n| [locust](https://github.com/locustio/locust) | `2.43.4` | `2.44.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.1` |\n\n\nUpdates `fastapi` from 0.136.1 to 0.138.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15759\"\u003e#15759\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15757\"\u003e#15757\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15756\"\u003e#15756\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15755\"\u003e#15755\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15754\"\u003e#15754\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15753\"\u003e#15753\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15752\"\u003e#15752\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15751\"\u003e#15751\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15758\"\u003e#15758\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Update sponsors: add BairesDev. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15787\"\u003e#15787\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Update sponsors script to simplify previews. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15786\"\u003e#15786\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b83b0d409009c8de9df4070fe163838b1a700c7\"\u003e\u003ccode\u003e4b83b0d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15808\"\u003e#15808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/041cb0cdfa2d0f705d14ed07c2c2e0f92ef5f32c\"\u003e\u003ccode\u003e041cb0c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/10393846ede7a2947cec594d15a43f813001cab4\"\u003e\u003ccode\u003e1039384\u003c/code\u003e\u003c/a\u003e 📝 Fix typo in release notes (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15807\"\u003e#15807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0303491b69ff84a4632c0314e6db4df74f2f93f9\"\u003e\u003ccode\u003e0303491\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/190f6e2033c8b886b25027be284d8c8c1893f28c\"\u003e\u003ccode\u003e190f6e2\u003c/code\u003e\u003c/a\u003e 📝 Add Frontend instructions to Agent Library Skill (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15805\"\u003e#15805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/17945e5ab7f25234340c152a40d232a98857e079\"\u003e\u003ccode\u003e17945e5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2260afaf433103c8104b34d256cf0b96b058823b\"\u003e\u003ccode\u003e2260afa\u003c/code\u003e\u003c/a\u003e 🐛 Fix failing test, update format for raised errors (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15804\"\u003e#15804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0cd5001d0ef80a07e2d775c5c75522391a3e06d7\"\u003e\u003ccode\u003e0cd5001\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7cb1ab6264bc03319832f553730b511192a0c0d3\"\u003e\u003ccode\u003e7cb1ab6\u003c/code\u003e\u003c/a\u003e 👷 Fix test-alls-green (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15803\"\u003e#15803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9c7eceb00ff6e1d37980954418f7c9dab30a4cd5\"\u003e\u003ccode\u003e9c7eceb\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.1...0.138.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.46.0 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.49.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.26 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.31\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003eKludex/python-multipart#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003eKludex/python-multipart#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate Content-Length is non-negative in parse_form by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003eKludex/python-multipart#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.30\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTreat only \u003ccode\u003e\u0026amp;\u003c/code\u003e as the urlencoded field separator by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003eKludex/python-multipart#290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231 extended parameters in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003eKludex/python-multipart#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.29\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/manunio\"\u003e\u003ccode\u003e@​manunio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003eKludex/python-multipart#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePass parse offsets via constructors by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003eKludex/python-multipart#268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multipart header limits by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003eKludex/python-multipart#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.31 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003e#296\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eContent-Length\u003c/code\u003e is non-negative in \u003ccode\u003eparse_form\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003e#297\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30 (2026-05-31)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParse \u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e bodies per the WHATWG URL standard, treating only \u003ccode\u003e\u0026amp;\u003c/code\u003e as a field separator \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003e#290\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231/5987 extended parameters (\u003ccode\u003ename*\u003c/code\u003e, \u003ccode\u003efilename*\u003c/code\u003e) in \u003ccode\u003eparse_options_header\u003c/code\u003e, keeping the plain parameter authoritative per \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7578#section-4.2\"\u003eRFC 7578 §4.2\u003c/a\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003e#291\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29 (2026-05-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003e#270\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.27 (2026-04-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multipart header limits \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003e#267\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePass parse offsets via constructors \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003e#268\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/4cffc68a165f7a6f6b7756ce006fabf07a05b7a4\"\u003e\u003ccode\u003e4cffc68\u003c/code\u003e\u003c/a\u003e Version 0.0.31 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/c814948acf509cef7881fa75c969969b19239bbf\"\u003e\u003ccode\u003ec814948\u003c/code\u003e\u003c/a\u003e Reject negative \u003ccode\u003eContent-Length\u003c/code\u003e in \u003ccode\u003eparse_form\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6b837d47bc68826ed5cbbcb50c6c6a6093444494\"\u003e\u003ccode\u003e6b837d4\u003c/code\u003e\u003c/a\u003e Bound header field name size before validating (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/e0c4f9df2e737d1663fbbdd6563f80613a2089f9\"\u003e\u003ccode\u003ee0c4f9d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b8a01bb683e8e8675fdb5d831b206a478c8215aa\"\u003e\u003ccode\u003eb8a01bb\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6732164f30c58e28589a1e22213d2f6b8c6bad9f\"\u003e\u003ccode\u003e6732164\u003c/code\u003e\u003c/a\u003e Speed up multipart header parsing and callback dispatch (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.32\"\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.49 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `scipy` from 1.17.1 to 1.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.18.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.18.0\u003c/code\u003e is the culmination of \u003ccode\u003e6\u003c/code\u003e months of hard work. It contains\nmany new features, numerous bug-fixes, improved test coverage and better\ndocumentation. There have been a number of deprecations and API changes\nin this release, which are documented below. All users are encouraged to\nupgrade to this release, as there are a large number of bug-fixes and\noptimizations. Before upgrading, we recommend that users check that\ntheir own code does not use deprecated SciPy functionality (to do so,\nrun your code with \u003ccode\u003epython -Wd\u003c/code\u003e and check for \u003ccode\u003eDeprecationWarning\u003c/code\u003e s).\nOur development attention will now shift to bug-fix releases on the\n1.18.x branch, and on adding new features on the main branch.\u003c/p\u003e\n\u003cp\u003eThis release requires Python \u003ccode\u003e3.12-3.14\u003c/code\u003e and NumPy \u003ccode\u003e2.0.0\u003c/code\u003e or greater.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSciPy now supports three different build modes for BLAS and LAPACK\nLP64/ILP64 support, and machinery is provided for downstream \u003ccode\u003ecython_lapack\u003c/code\u003e\nconsumers to gracefully handle LP64/ILP64 backend builds. ILP64 support\nhas been substantially improved across the SciPy library.\u003c/li\u003e\n\u003cli\u003eRemaining Fortran to C translations have been completed---an experimental\nFortran-free build option is now available to developers for testing\npurposes. Developer feedback is welcome on Fortran-free builds.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003escipy.signal.whittaker_henderson\u003c/code\u003e now provides access to Whittaker-Henderson\nsmoothing of a discrete signal.\u003c/li\u003e\n\u003cli\u003eA large number of \u003ccode\u003escipy.stats\u003c/code\u003e functions now support lazy arrays and JAX\nJIT. Array API support has been improved substantially in SciPy, with at least\n21 functions gaining new support in this release. 16 \u003ccode\u003escipy.stats\u003c/code\u003e functions\nhave also gained support for MArray input.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eNew features\u003c/h1\u003e\n\u003ch1\u003e\u003ccode\u003escipy.fft\u003c/code\u003e improvements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSciPy's internal FFT backend has switched from \u003ccode\u003epocketfft\u003c/code\u003e to its\nsuccessor package \u003ccode\u003educc0.fft\u003c/code\u003e, which features several incremental\nimprovements. The most significant of those from SciPy's perspective is\nprobably that storage requirements for internally cached plans have been\nsignificantly reduced for most long 1D transforms. Plans that require more\nstorage than 1MB will no longer be cached; this mainly affects huge 1D\ntransforms of prime and near-prime sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ccode\u003escipy.interpolate\u003c/code\u003e improvements\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/54ef5423f2e4376230ec3bfda6912a07a50958e3\"\u003e\u003ccode\u003e54ef542\u003c/code\u003e\u003c/a\u003e REL: 1.18.0 release commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/a45e463116d16e9c3fbbd0f136eb73682f06936e\"\u003e\u003ccode\u003ea45e463\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25395\"\u003e#25395\u003c/a\u003e from tylerjereddy/treddy_prep_1.18.0_final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/ee2442ea91ea166617d69854e43c40ee06ef1e95\"\u003e\u003ccode\u003eee2442e\u003c/code\u003e\u003c/a\u003e TYP, MAINT, TST: PR 25395 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/3225154c1be61f3c57f86e60ccfe24ea8ce9f75f\"\u003e\u003ccode\u003e3225154\u003c/code\u003e\u003c/a\u003e DOC: PR 25395 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/14c7bd7c8dac58c48d0a462643668b9e513741f0\"\u003e\u003ccode\u003e14c7bd7\u003c/code\u003e\u003c/a\u003e TYP: Fix mypy errors with \u003ccode\u003epytest==9.1.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25410\"\u003e#25410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/71522e9af4ac66827fd345c38d46d62280ad0481\"\u003e\u003ccode\u003e71522e9\u003c/code\u003e\u003c/a\u003e DOC: revise SciPy 1.18.0 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/92f8482d9ab62e275e57af3759a687a2cfcb7a1b\"\u003e\u003ccode\u003e92f8482\u003c/code\u003e\u003c/a\u003e MAINT: fix errors from pytest 9.1 (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25378\"\u003e#25378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/7b27bf432b59e39def05cad0f0a41644de76b2cd\"\u003e\u003ccode\u003e7b27bf4\u003c/code\u003e\u003c/a\u003e TST, MAINT: modernize spatial tests for pytest 10 (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25376\"\u003e#25376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/d05b640b572d281d8af49858617fa05a341a50d3\"\u003e\u003ccode\u003ed05b640\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25347\"\u003e#25347\u003c/a\u003e from tylerjereddy/treddy_version_bump_1.18.0rc3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/e60fe8b1b49f98b10f67880eef16c5790ca3c9b9\"\u003e\u003ccode\u003ee60fe8b\u003c/code\u003e\u003c/a\u003e REL: set to 1.18.0rc3 unreleased\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy/compare/v1.17.1...v1.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release adds \u003ca href=\"https://narwhals-dev.github.io/narwhals/\"\u003enarwhals\u003c/a\u003e as a new dependency that will help to improve dataframe interoperability across the project.\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/77def0ed6e3beab57244885d2a584470e96c103d\"\u003e\u003ccode\u003e77def0e\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ee7c0b0e34ffe0f5eff8c7aeda49783f70bd9faa\"\u003e\u003ccode\u003eee7c0b0\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/3d7fb048fc5f05555a202d2b24307628841904b5\"\u003e\u003ccode\u003e3d7fb04\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8954e7baf1f827320b17817f0ab76d025f5e6421\"\u003e\u003ccode\u003e8954e7b\u003c/code\u003e\u003c/a\u003e DOC Release highlights for 1.9 (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34147\"\u003e#34147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73a3eab9d7bc58b695e4da8765044815b90b8dee\"\u003e\u003ccode\u003e73a3eab\u003c/code\u003e\u003c/a\u003e Fix: Array-API - avoid failing for numpy fit + predict with sparse or array-l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8839aaeb2fa2a4e3ad2f0a5a69b5f427cffe1dd1\"\u003e\u003ccode\u003e8839aae\u003c/code\u003e\u003c/a\u003e DOC Thread-safety requirement for open_listener message consumer callback (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/4d2476a4e2acc9429b96d8ee80218a96d24c2bde\"\u003e\u003ccode\u003e4d2476a\u003c/code\u003e\u003c/a\u003e DOC Refactor array API docs page (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34054\"\u003e#34054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f9f812fe6a4ea54c482da6b195773917b636365e\"\u003e\u003ccode\u003ef9f812f\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d779dc335a31d74ef472003d9012066f07ee8834\"\u003e\u003ccode\u003ed779dc3\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/6a03cf0906987ce77b37e780ccdebbe3f85e9235\"\u003e\u003ccode\u003e6a03cf0\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.8.0...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `shap` from 0.44.1 to 0.52.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/shap/shap/releases\"\u003eshap's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.52.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNative bindings rewritten with \u003cstrong\u003enanobind\u003c/strong\u003e, and the build system migrated\nfrom \u003ccode\u003esetup.py\u003c/code\u003e to \u003cstrong\u003escikit-build-core + CMake\u003c/strong\u003e. The Cython\n\u003ccode\u003e_kernel_lib.pyx\u003c/code\u003e and the existing \u003ccode\u003e_cext\u003c/code\u003e / \u003ccode\u003e_cext_gpu\u003c/code\u003e modules are now\nbuilt as nanobind extensions, and \u003ccode\u003eMANIFEST.in\u003c/code\u003e / \u003ccode\u003esetup.py\u003c/code\u003e have been\nremoved in favor of a \u003ccode\u003epyproject.toml\u003c/code\u003e-driven build. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4366\"\u003e#4366\u003c/a\u003e, by\n\u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/daidahao\"\u003e\u003ccode\u003e@​daidahao\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/claude\"\u003e\u003ccode\u003e@​claude\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinimum dependency versions raised to follow SPEC 0. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4310\"\u003e#4310\u003c/a\u003e, by \u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLog an \u003ccode\u003eINFO\u003c/code\u003e message when background data is sub-sampled (closes \u003ca href=\"https://redirect.github.com/shap/shap/issues/3461\"\u003e#3461\u003c/a\u003e).\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4294\"\u003e#4294\u003c/a\u003e, by \u003ca href=\"https://github.com/Ebube22\"\u003e\u003ccode\u003e@​Ebube22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd cross-links between the API Reference and API Examples pages.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4329\"\u003e#4329\u003c/a\u003e, by \u003ca href=\"https://github.com/Abhishek9639\"\u003e\u003ccode\u003e@​Abhishek9639\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop the unused \u003ccode\u003etyping-extensions\u003c/code\u003e dependency. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4629\"\u003e#4629\u003c/a\u003e, by \u003ca href=\"https://github.com/samudraneel05\"\u003e\u003ccode\u003e@​samudraneel05\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove GPU TreeExplainer parity: preserve XGBoost default/missing child\nrouting so NaN values follow the same branch as the source model, preserve\nvector-valued XGBoost \u003ccode\u003ebase_score\u003c/code\u003e values (fixing multiclass additivity\noffsets), and tighten categorical handling so sklearn models with\n\u003ccode\u003eenable_categorical=True\u003c/code\u003e raise the existing unsupported-categorical error\neven when the booster does not expose \u003ccode\u003efeature_types\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4997\"\u003e#4997\u003c/a\u003e, by\n\u003ca href=\"https://github.com/RAMitchell\"\u003e\u003ccode\u003e@​RAMitchell\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreeExplainer no longer crashes with pandas nullable dtypes.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4298\"\u003e#4298\u003c/a\u003e, by \u003ca href=\"https://github.com/tudstudent\"\u003e\u003ccode\u003e@​tudstudent\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eNameError\u003c/code\u003e when \u003ccode\u003ewith_binary=False\u003c/code\u003e and \u003ccode\u003ewith_cuda=True\u003c/code\u003e by\ninitializing \u003ccode\u003ecompile_args\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4322\"\u003e#4322\u003c/a\u003e, by \u003ca href=\"https://github.com/mohityadav8\"\u003e\u003ccode\u003e@​mohityadav8\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eText plot colors render correctly by converting NumPy types to float.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4332\"\u003e#4332\u003c/a\u003e, by \u003ca href=\"https://github.com/Saloni-0465\"\u003e\u003ccode\u003e@​Saloni-0465\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAssign the result of \u003ccode\u003enp.flipud\u003c/code\u003e so it is no longer a no-op in\n\u003ccode\u003eAdditiveForceArrayVisualizer\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4343\"\u003e#4343\u003c/a\u003e, by \u003ca href=\"https://github.com/Mahaveerjain-18\"\u003e\u003ccode\u003e@​Mahaveerjain-18\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eisinstance()\u003c/code\u003e instead of \u003ccode\u003eis\u003c/code\u003e for type checks. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4373\"\u003e#4373\u003c/a\u003e, by \u003ca href=\"https://github.com/divyam-jha123\"\u003e\u003ccode\u003e@​divyam-jha123\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003e'sample'\u003c/code\u003e in \u003ccode\u003eExplanation.op_history\u003c/code\u003e instead of \u003ccode\u003e'__getitem__'\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4376\"\u003e#4376\u003c/a\u003e, by \u003ca href=\"https://github.com/tarun-227\"\u003e\u003ccode\u003e@​tarun-227\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove the unreachable large-dataset warning into the interventional branch.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4392\"\u003e#4392\u003c/a\u003e, by \u003ca href=\"https://github.com/Mahaveerjain-18\"\u003e\u003ccode\u003e@​Mahaveerjain-18\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u0026quot;structure of inputs doesn't match the expected structure\u0026quot;.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4410\"\u003e#4410\u003c/a\u003e, by \u003ca href=\"https://github.com/shaivimalik\"\u003e\u003ccode\u003e@​shaivimalik\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the return value from \u003ccode\u003eis_color_map()\u003c/code\u003e in \u003ccode\u003eplots/_beeswarm.py\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4421\"\u003e#4421\u003c/a\u003e, by \u003ca href=\"https://github.com/maniktyagi04\"\u003e\u003ccode\u003e@​maniktyagi04\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuppress the \u003ccode\u003eUserWarning\u003c/code\u003e when \u003ccode\u003eLGBMRegressor\u003c/code\u003e was fitted with feature\nnames. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4422\"\u003e#4422\u003c/a\u003e, by \u003ca href=\"https://github.com/shaivimalik\"\u003e\u003ccode\u003e@​shaivimalik\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/shap/shap/commit/8461059bd4e5db2d5d401472ef871c5d411984fe\"\u003e\u003ccode\u003e8461059\u003c/code\u003e\u003c/a\u003e FIX: Improve GPU TreeExplainer parity (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4997\"\u003e#4997\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/8549e6bc3516f71480f0c147265cf5577e4f7a6b\"\u003e\u003ccode\u003e8549e6b\u003c/code\u003e\u003c/a\u003e fix: use isinstance() instead of type() is tuple checks (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4508\"\u003e#4508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/3be70014c904649286a4211a2cb7155fcb79d89e\"\u003e\u003ccode\u003e3be7001\u003c/code\u003e\u003c/a\u003e remove webpack dependency for sickness scores (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5018\"\u003e#5018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/6e9f9b8563fb63c37ae4f7a2af308444857cb20c\"\u003e\u003ccode\u003e6e9f9b8\u003c/code\u003e\u003c/a\u003e build(deps): bump qs and express in /javascript (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5015\"\u003e#5015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/9be5435bb8523eba406147e8dcf3186008818bff\"\u003e\u003ccode\u003e9be5435\u003c/code\u003e\u003c/a\u003e build(deps): bump idna from 3.11 to 3.15 in /docs (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5007\"\u003e#5007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/52dd763bd36603c39ce3a4fc68e7fd805380706e\"\u003e\u003ccode\u003e52dd763\u003c/code\u003e\u003c/a\u003e pin torch to \u0026lt;=2.11.0 in pyproject.toml (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5017\"\u003e#5017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/d8f2e7656017d5f39e6c026852d1eb6caa2dc711\"\u003e\u003ccode\u003ed8f2e76\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump webpack-dev-server in /javascript (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5009\"\u003e#5009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/ac6e677d627d5458395e5a2925a3ff3297fafd7a\"\u003e\u003ccode\u003eac6e677\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump \u003ccode\u003e@​babel/plugin-transform-modules-systemjs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4991\"\u003e#4991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/679b2eefb00a96ac9b2741103baec27206b26154\"\u003e\u003ccode\u003e679b2ee\u003c/code\u003e\u003c/a\u003e FIX: warn when covariance matrix is singular in LinearExplainer (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4471\"\u003e#4471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/ce4abd76933cac06e1cedbd75bd8fcfc74238318\"\u003e\u003ccode\u003ece4abd7\u003c/code\u003e\u003c/a\u003e build(deps): bump mistune from 3.2.0 to 3.2.1 (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shap/shap/compare/v0.44.1...v0.52.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tqdm` from 4.67.3 to 4.68.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tqdm/tqdm/releases\"\u003etqdm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etqdm v4.68.3 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eutils\u003c/code\u003e: delay \u003ccode\u003eos.get_terminal_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1763\"\u003e#1763\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eautonotebook\u003c/code\u003e: support QtConsole, Spyder, JupyterLite (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1763\"\u003e#1763\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1628\"\u003e#1628\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1559\"\u003e#1559\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1283\"\u003e#1283\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1098\"\u003e#1098\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/512\"\u003e#512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eminor docs updates\n\u003cul\u003e\n\u003cli\u003efix typo (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1762\"\u003e#1762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse \u003ccode\u003egit-fame\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003emisc minor framework updates\n\u003cul\u003e\n\u003cli\u003efix \u0026amp; update CI build\u003c/li\u003e\n\u003cli\u003epre-commit: add docs \u0026amp; metadata generation\u003c/li\u003e\n\u003cli\u003emove \u003ccode\u003etox.ini\u003c/code\u003e -\u0026gt; \u003ccode\u003epyproject.toml\u003c/code\u003e, move \u003ccode\u003etox-gh-actions\u003c/code\u003e -\u0026gt; \u003ccode\u003etox-gh\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14, drop 3.7 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.68.2 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erevert accidental change to \u003ccode\u003eascii\u003c/code\u003e default (fixes \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUnicodeEncodeError: 'charmap' codec can't encode characters in position 6-7: character maps to \u0026lt;undefined\u0026gt;\u003c/code\u003e can be fixed by installing \u003ccode\u003etqdm!=4.68.0,!=4.68.1\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003emisc docs updates\n\u003cul\u003e\n\u003cli\u003efix links\u003c/li\u003e\n\u003cli\u003ereplace stray \u003ccode\u003erst\u003c/code\u003e -\u0026gt; \u003ccode\u003emd\u003c/code\u003e syntax\u003c/li\u003e\n\u003cli\u003econsistent \u0026quot;progress bar\u0026quot; terminology (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1737\"\u003e#1737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003etests: fix coverage (fixes \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.68.1 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eset name of monitor thread (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1669\"\u003e#1669\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1752\"\u003e#1752\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix monitor thread \u003ccode\u003eatexit\u003c/code\u003e deadlock (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1751\"\u003e#1751\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/528\"\u003e#528\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/627\"\u003e#627\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1435\"\u003e#1435\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1564\"\u003e#1564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: minor copyediting\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.68.0 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eutils\u003c/code\u003e: simplify terminal size detection (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtrib\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eitertools\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003echain\u003c/code\u003e, \u003ccode\u003epermutations\u003c/code\u003e, \u003ccode\u003ecombinations\u003c/code\u003e, \u003ccode\u003ecombinations_with_replacement\u003c/code\u003e, \u003ccode\u003ebatched\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eproduct(repeat=1)\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1428\"\u003e#1428\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003ediscord\u003c/code\u003e, \u003ccode\u003etelegram\u003c/code\u003e error handling\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003ediscord\u003c/code\u003e, \u003ccode\u003eslack\u003c/code\u003e, \u003ccode\u003etelegram\u003c/code\u003e format for \u003ccode\u003etotal=None\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003esoft-deprecate \u003ccode\u003etqdm.utils.envwrap\u003c/code\u003e -\u0026gt; \u003ca href=\"https://github.com/tqdm/envwrap\"\u003e\u003ccode\u003eenvwrap\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebenchmarks: fix \u003ccode\u003easv\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emisc linting\u003c/li\u003e\n\u003cli\u003emisc framework updates\n\u003cul\u003e\n\u003cli\u003eCI: migrate manual job to \u003ccode\u003epre-commit.ci\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebump workflow actions \u0026amp; pre-commit hooks\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/9aff6090b6fa98c88a2dbff8bd9e2a68d9a99c1b\"\u003e\u003ccode\u003e9aff609\u003c/code\u003e\u003c/a\u003e bump version, merge pull request \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1763\"\u003e#1763\u003c/a\u003e from tqdm/jupyterlite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/9872f80e0d9ceb8377b45c714ec8f6ae66bf9ef9\"\u003e\u003ccode\u003e9872f80\u003c/code\u003e\u003c/a\u003e drop date from snap version str to fix pydantic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/b82933405f6dc19dd8f667be57fd2058a00f75c7\"\u003e\u003ccode\u003eb829334\u003c/code\u003e\u003c/a\u003e support QtConsole, Spyder, JupyterLite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/6fa4867b27dd4852204aa13f73300db41791cd46\"\u003e\u003ccode\u003e6fa4867\u003c/code\u003e\u003c/a\u003e delay os.get_terminal_size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/748e107287c9a66e3a366cd5366bd9a8bcbe33ae\"\u003e\u003ccode\u003e748e107\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/e6e29eb7a191d366d21b93817c6de3857b664367\"\u003e\u003ccode\u003ee6e29eb\u003c/code\u003e\u003c/a\u003e move tox.ini -\u0026gt; pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/617e4faf67d6cc59d42e3b2665b0c1199a665db4\"\u003e\u003ccode\u003e617e4fa\u003c/code\u003e\u003c/a\u003e tox-gh-actions -\u0026gt; tox-gh\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/c49c50d83124e514d2b6bb549661ff1e2fa44504\"\u003e\u003ccode\u003ec49c50d\u003c/code\u003e\u003c/a\u003e add python 3.14, drop python 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/fa2bcdb4ad68d4e95bd49460d8d590451cf478ba\"\u003e\u003ccode\u003efa2bcdb\u003c/code\u003e\u003c/a\u003e pre-commit: tqdm.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/1ec798811a960294d74d42d35b6614e3273e9fe3\"\u003e\u003ccode\u003e1ec7988\u003c/code\u003e\u003c/a\u003e auto git-fame\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tqdm/tqdm/compare/v4.67.3...v4.68.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.9 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.0\u003c/h2\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. \u003ca href=\"https://matplotlib.org/3.11.0/release/prev_whats_new/whats_new_3.11.0.html\"\u003eSee the release notes for more information\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc2\u003c/h2\u003e\n\u003cp\u003eThis is the second release candidate for the meso release 3.11.0.\u003c/p\u003e\n\u003cp\u003eThis release candidate fixes some problems with downstream packages, removes some missed deprecations, and corrects some additional minor bugs.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc1\u003c/h2\u003e\n\u003cp\u003eAfter an extended development stretch, we are pleased to announce the first release candidate of Matplotlib 3.11.0.\u003c/p\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner. Due to the update to the font rendering stack, we cannot guarantee that text will be bit-for-bit perfect with previous releases, so if you are using Matplotlib for testing, it may be necessary to introduce/raise a tolerance within your tests.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. Final release notes are still being curated, but you may browse \u003ca href=\"https://matplotlib.org/3.11.0/release/next_whats_new\"\u003ethe list of new features\u003c/a\u003e, \u003ca href=\"https://matplotlib.org/3.11.0/api/next_api_changes.html\"\u003eAPI changes\u003c/a\u003e, and \u003ca href=\"https://github.com/matplotlib/matplotlib/milestone/96?closed=1https://github.com/matplotlib/matplotlib/milestone/96?closed=1\"\u003eall issues/pull requests on the milestone\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a note for downstream packagers, the font libraries have only been tested against the versions bundled with the wheels. It may be possible to expand the range of requirements, or that a requirement is too broad. Please report any issues you have building against external dependencies.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/69c7534c7b45119dd9d33d1c32a7ff4c48d8080f\"\u003e\u003ccode\u003e69c7534\u003c/code\u003e\u003c/a\u003e REL: v3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b7d912b2c53fa2cebfcbfe2cf6bd74ebd5b79f46\"\u003e\u003ccode\u003eb7d912b\u003c/code\u003e\u003c/a\u003e DOC: Set 3.11 as preferred stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/7c3d5022d7e668340acb8cb7cccb779abbef39f9\"\u003e\u003ccode\u003e7c3d502\u003c/code\u003e\u003c/a\u003e Update Security Policy for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/964e73d9568e943d60e9db966bc759407a231290\"\u003e\u003ccode\u003e964e73d\u003c/code\u003e\u003c/a\u003e DOC: Prepare GitHub stats for 3.11 final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bfa26331e32d7934f80cdd4882b9c5d06bb4770e\"\u003e\u003ccode\u003ebfa2633\u003c/code\u003e\u003c/a\u003e Bump font manager version to final release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0603b29671010fb05c3e56a6b072b352968c397\"\u003e\u003ccode\u003ed0603b2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31873\"\u003e#31873\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31706-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/edf5ebc1200f88f7340e3a96972abe9c66c97835\"\u003e\u003ccode\u003eedf5ebc\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31706\"\u003e#31706\u003c/a\u003e: Fix clabel manual index\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/c0e80b7e2ed1a4516604aa5bb432e2de032759c7\"\u003e\u003ccode\u003ec0e80b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31872\"\u003e#31872\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31868-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2a148549a9949a5ca710e04d2572001e33f43762\"\u003e\u003ccode\u003e2a14854\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31868\"\u003e#31868\u003c/a\u003e: DOC: Move errorbar examples to the statistics sections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/ea43d96dc2157beec49e64fb4a60647ba004644f\"\u003e\u003ccode\u003eea43d96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31871\"\u003e#31871\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31870-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.9...v3.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be ab...\n\n_Description has been truncated_","html_url":"https://github.com/jbInf-08/biomarker_identifier/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbInf-08%2Fbiomarker_identifier/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"},{"uuid":"4697090146","node_id":"PR_kwDOPmzXZM7oL0qQ","number":333,"state":"closed","title":"chore(deps): update sqlalchemy requirement from \u003c3.0,\u003e=2.0.50 to \u003e=2.0.51,\u003c3.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-27T01:19:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-19T01:14:35.000Z","updated_at":"2026-06-27T01:19:52.000Z","time_to_close":691516,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"sqlalchemy","old_version":"\u003c3.0,\u003e=2.0.50","new_version":"\u003e=2.0.51,\u003c3.0","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\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/bethington/ghidra-mcp/pull/333","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bethington%2Fghidra-mcp/issues/333","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/333/packages"},{"uuid":"4688145472","node_id":"PR_kwDOS92DOc7nuWMs","number":15,"state":"open","title":"deps(deps): update sqlalchemy requirement from \u003e=2.0.0 to \u003e=2.0.51","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-18T00:37:59.000Z","updated_at":"2026-06-18T00:38:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): update","packages":[{"name":"sqlalchemy","old_version":"\u003e=2.0.0","new_version":"\u003e=2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\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/ichhitmahajan/ig/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ichhitmahajan%2Fig/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4679091194","node_id":"PR_kwDOP0TLGM7nQd8c","number":508,"state":"open","title":"chore(api-deps): bump sqlalchemy from 2.0.49 to 2.0.51 in /apps/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":"2026-06-17T01:05:32.000Z","updated_at":"2026-06-17T01:08:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(api-deps)","packages":[{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/apps/api","ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.49 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.49\u0026new-version=2.0.51)](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/Menschlichkeit-Osterreich/menschlichkeit-oesterreich/pull/508","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Menschlichkeit-Osterreich%2Fmenschlichkeit-oesterreich/issues/508","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/508/packages"},{"uuid":"4673758130","node_id":"PR_kwDORlzcxM7m-xu3","number":270,"state":"open","title":"build(deps): Bump sqlalchemy from 2.0.50 to 2.0.51 in /backend","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-16T11:34:18.000Z","updated_at":"2026-06-19T06:43:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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","html_url":"https://github.com/ale-sanchez-g/open-prompt-manager/pull/270","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ale-sanchez-g%2Fopen-prompt-manager/issues/270","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/270/packages"},{"uuid":"4670664383","node_id":"PR_kwDOEa4COM7m0sZp","number":107,"state":"open","title":"Bump sqlalchemy from 2.0.50 to 2.0.51","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["tiksn"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-16T03:02:39.000Z","updated_at":"2026-06-16T03:04:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.50\u0026new-version=2.0.51)](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/tiksn/emote/pull/107","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiksn%2Femote/issues/107","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/107/packages"},{"uuid":"4670378256","node_id":"PR_kwDOLvCgVM7mzxOa","number":488,"state":"closed","title":"Bump sqlalchemy from 2.0.50 to 2.0.51","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-16T02:04:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-16T02:04:01.000Z","updated_at":"2026-06-16T02:04:25.000Z","time_to_close":17,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.50\u0026new-version=2.0.51)](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/Fulastiklassen/Baamshop/pull/488","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fulastiklassen%2FBaamshop/issues/488","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/488/packages"}],"issue_packages":[{"old_version":"2.0.50","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-07-06T00:35:24.000Z","version_change":"2.0.50 → 2.0.51","issue":{"uuid":"4815066159","node_id":"PR_kwDORuqI6s7uI7uh","number":242,"state":"open","title":"chore(deps): bump the backend-prod group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-06T00:35:24.000Z","updated_at":"2026-07-06T00:36:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend-prod","update_count":5,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.139.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.49.0","new_version":"0.50.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pydantic","old_version":"2.13.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-prod group with 5 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.139.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.49.0` | `0.50.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.50` | `2.0.51` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.2` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n\n\nUpdates `fastapi` from 0.136.3 to 0.139.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.139.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authentication for the frontend. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15908\"\u003e#15908\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15897\"\u003e#15897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15895\"\u003e#15895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15896\"\u003e#15896\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15899\"\u003e#15899\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15892\"\u003e#15892\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15891\"\u003e#15891\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15893\"\u003e#15893\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15898\"\u003e#15898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15900\"\u003e#15900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15890\"\u003e#15890\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15894\"\u003e#15894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15888\"\u003e#15888\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15880\"\u003e#15880\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15889\"\u003e#15889\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15883\"\u003e#15883\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15885\"\u003e#15885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15882\"\u003e#15882\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15887\"\u003e#15887\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15886\"\u003e#15886\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15881\"\u003e#15881\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15884\"\u003e#15884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15879\"\u003e#15879\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15909\"\u003e#15909\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15906\"\u003e#15906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15878\"\u003e#15878\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Remove not needed \u003ccode\u003eallow-unsafe-pr-checkout: true\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15876\"\u003e#15876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15872\"\u003e#15872\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 10 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15870\"\u003e#15870\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15826\"\u003e#15826\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cecd96d9c6c318e0df1c40cedbc2e953381ddfd3\"\u003e\u003ccode\u003ececd96d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.139.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15910\"\u003e#15910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aea660936b55fdbd84270d24f892839388922dd6\"\u003e\u003ccode\u003eaea6609\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/319be508ce7db9ee5f52c3b9baa68c6cc1037c10\"\u003e\u003ccode\u003e319be50\u003c/code\u003e\u003c/a\u003e ✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/66a90f6ee9c0cf58ec61b14f8925344d6f16eae5\"\u003e\u003ccode\u003e66a90f6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d30a3ebfc7d7fd7851ba4243677266c53cb9f154\"\u003e\u003ccode\u003ed30a3eb\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15909\"\u003e#15909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/122f1b58f4e0fabfefef3710a8c8247bb2bd820b\"\u003e\u003ccode\u003e122f1b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd6ece32eeb27c9ce164bd9170f9d8e1db1dacff\"\u003e\u003ccode\u003efd6ece3\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI GitHub topic repositories (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15906\"\u003e#15906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ec2a6adaf14c440bdcd0fd3f4ca203daa8c3ba6a\"\u003e\u003ccode\u003eec2a6ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9d7d7febd3a66844f948254c1ba4745b6cc16f40\"\u003e\u003ccode\u003e9d7d7fe\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for fr (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15897\"\u003e#15897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8dc852df4713efa998d126c5194302e9f06e7675\"\u003e\u003ccode\u003e8dc852d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.3...0.139.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.49.0 to 0.50.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.50.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMemoize trusted host checks to avoid re-parsing the client IP per request by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2970\"\u003eKludex/uvicorn#2970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003easgi\u003c/code\u003e scope sub-dict per connection by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2976\"\u003eKludex/uvicorn#2976\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild a fresh \u003ccode\u003easgi\u003c/code\u003e scope dict per request by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2977\"\u003eKludex/uvicorn#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace click.style with an internal ANSI style helper by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2981\"\u003eKludex/uvicorn#2981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid copying single-frame WebSocket payloads in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2983\"\u003eKludex/uvicorn#2983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate the legacy websockets implementation and default \u003ccode\u003eauto\u003c/code\u003e to websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2985\"\u003eKludex/uvicorn#2985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExit with a dedicated code on startup failure and stop the supervisor when a worker can't boot by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3001\"\u003eKludex/uvicorn#3001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip the eager app import in the parent when spawning workers by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3012\"\u003eKludex/uvicorn#3012\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.49.0...0.50.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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.50.0 (July 4, 2026)\u003c/h2\u003e\n\u003cp\u003eIf you use WebSockets, note that \u003ccode\u003e--ws auto\u003c/code\u003e now picks the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation. You shouldn't need it, but you can pin \u003ccode\u003e--ws websockets\u003c/code\u003e to get the deprecated legacy one back.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExit with the dedicated code 3 on any startup failure: app loading, socket bind and lifespan startup errors previously exited with a mix of 0, 1 and 3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop the multiprocess supervisor when a worker exits with code 3 instead of restarting it forever (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDefault \u003ccode\u003e--ws auto\u003c/code\u003e to \u003ccode\u003ewebsockets-sansio\u003c/code\u003e when websockets is installed (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip the eager app import in the parent process with \u003ccode\u003e--reload\u003c/code\u003e or \u003ccode\u003e--workers\u003c/code\u003e, fixing a memory regression introduced in 0.47.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild a fresh \u003ccode\u003easgi\u003c/code\u003e scope dict per request (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache the \u003ccode\u003easgi\u003c/code\u003e scope sub-dict per connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid copying single-frame WebSocket payloads in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoize trusted host checks in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eclick.style\u003c/code\u003e with an internal ANSI style helper (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2981\"\u003e#2981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate the legacy \u003ccode\u003ewebsockets\u003c/code\u003e implementation; use \u003ccode\u003ewebsockets-sansio\u003c/code\u003e or \u003ccode\u003ewsproto\u003c/code\u003e instead (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21d2c16fd162ce0e92b5c35f4aadca63a8b12e2d\"\u003e\u003ccode\u003e21d2c16\u003c/code\u003e\u003c/a\u003e Version 0.50.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6c42e8d63bc41e7b721d30b33ff97c7e2fc27ce4\"\u003e\u003ccode\u003e6c42e8d\u003c/code\u003e\u003c/a\u003e Skip the eager app import in the parent when spawning workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/56a4631c98bdfa8f4712214e3910add5e5e7d7ba\"\u003e\u003ccode\u003e56a4631\u003c/code\u003e\u003c/a\u003e Exit with a dedicated code on startup failure and stop the supervisor when a ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3314dfcc18835a4d4afbac4b0c4b8f0ee0d5095d\"\u003e\u003ccode\u003e3314dfc\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3007\"\u003e#3007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/e8a31bca03254b8457c4c89596e310282cc33edc\"\u003e\u003ccode\u003ee8a31bc\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 9 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8d088b18f1ead0d75a0603d983300717079f9025\"\u003e\u003ccode\u003e8d088b1\u003c/code\u003e\u003c/a\u003e Deprecate the legacy websockets implementation and default \u003ccode\u003eauto\u003c/code\u003e to websocke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5b08cf6374430ce47de74ff2e594b277d09db17e\"\u003e\u003ccode\u003e5b08cf6\u003c/code\u003e\u003c/a\u003e Avoid copying single-frame WebSocket payloads in websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/bf3f60c28e92178878ecf043b858ab55cd97c223\"\u003e\u003ccode\u003ebf3f60c\u003c/code\u003e\u003c/a\u003e Replace click.style with an internal ANSI style helper (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2981\"\u003e#2981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eea1bcc895349d0f3c5e2fe8229d6484f801a1c4\"\u003e\u003ccode\u003eeea1bcc\u003c/code\u003e\u003c/a\u003e Build a fresh \u003ccode\u003easgi\u003c/code\u003e scope dict per request (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/afed2116795358dee707dbfc890b9eb5106d4720\"\u003e\u003ccode\u003eafed211\u003c/code\u003e\u003c/a\u003e Cache the \u003ccode\u003easgi\u003c/code\u003e scope sub-dict per connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0\"\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.50 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `pydantic` from 2.13.2 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.13.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\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/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.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 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/SafeVixAI/SafeVixAI/pull/242","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SafeVixAI%2FSafeVixAI/issues/242","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/242/packages"}},{"old_version":"2.0.48","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-07-04T00:02:18.000Z","version_change":"2.0.48 → 2.0.51","issue":{"uuid":"4806963494","node_id":"PR_kwDOSG1b6s7twtxt","number":4,"state":"closed","title":"chore(deps): bump the backend group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-07-04T00:31:19.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-04T00:02:18.000Z","updated_at":"2026-07-04T00:31:42.000Z","time_to_close":1741,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend","update_count":30,"packages":[{"name":"fastapi","old_version":"0.135.1","new_version":"0.139.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.14.0","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"cryptography","old_version":"46.0.5","new_version":"49.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"typer","old_version":"0.24.1","new_version":"0.26.8","repository_url":"https://github.com/fastapi/typer"}],"path":null,"ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nUpdates the requirements on [fastapi](https://github.com/fastapi/fastapi), [uvicorn](https://github.com/Kludex/uvicorn), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy), [alembic](https://github.com/sqlalchemy/alembic), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [cryptography](https://github.com/pyca/cryptography), [httpx](https://github.com/encode/httpx), [typer](https://github.com/fastapi/typer), [redis](https://github.com/redis/redis-py), [celery](https://github.com/celery/celery), [grpcio](https://github.com/grpc/grpc), [grpcio-reflection](https://grpc.io), [protobuf](https://github.com/protocolbuffers/protobuf), [reportlab](https://www.reportlab.com/), [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz), [prometheus-client](https://github.com/prometheus/client_python), [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator), [neo4j](https://github.com/neo4j/neo4j-python-driver), [chromadb](https://github.com/chroma-core/chroma), [groq](https://github.com/groq/groq-python), [pyotp](https://github.com/pyauth/pyotp), [pybind11](https://github.com/pybind/pybind11), [fakeredis](https://github.com/cunla/fakeredis-py), [pytest](https://github.com/pytest-dev/pytest), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio), [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit), [websockets](https://github.com/python-websockets/websockets), [keyring](https://github.com/jaraco/keyring) and [textual](https://github.com/Textualize/textual) to permit the latest version.\nUpdates `fastapi` from 0.135.1 to 0.139.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.139.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authentication for the frontend. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15908\"\u003e#15908\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15897\"\u003e#15897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15895\"\u003e#15895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15896\"\u003e#15896\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15899\"\u003e#15899\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15892\"\u003e#15892\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15891\"\u003e#15891\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15893\"\u003e#15893\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15898\"\u003e#15898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15900\"\u003e#15900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15890\"\u003e#15890\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15894\"\u003e#15894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15888\"\u003e#15888\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15880\"\u003e#15880\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15889\"\u003e#15889\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15883\"\u003e#15883\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15885\"\u003e#15885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15882\"\u003e#15882\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15887\"\u003e#15887\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15886\"\u003e#15886\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15881\"\u003e#15881\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15884\"\u003e#15884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15879\"\u003e#15879\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15909\"\u003e#15909\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15906\"\u003e#15906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15878\"\u003e#15878\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Remove not needed \u003ccode\u003eallow-unsafe-pr-checkout: true\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15876\"\u003e#15876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15872\"\u003e#15872\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 10 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15870\"\u003e#15870\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15826\"\u003e#15826\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cecd96d9c6c318e0df1c40cedbc2e953381ddfd3\"\u003e\u003ccode\u003ececd96d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.139.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15910\"\u003e#15910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aea660936b55fdbd84270d24f892839388922dd6\"\u003e\u003ccode\u003eaea6609\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/319be508ce7db9ee5f52c3b9baa68c6cc1037c10\"\u003e\u003ccode\u003e319be50\u003c/code\u003e\u003c/a\u003e ✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/66a90f6ee9c0cf58ec61b14f8925344d6f16eae5\"\u003e\u003ccode\u003e66a90f6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d30a3ebfc7d7fd7851ba4243677266c53cb9f154\"\u003e\u003ccode\u003ed30a3eb\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15909\"\u003e#15909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/122f1b58f4e0fabfefef3710a8c8247bb2bd820b\"\u003e\u003ccode\u003e122f1b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd6ece32eeb27c9ce164bd9170f9d8e1db1dacff\"\u003e\u003ccode\u003efd6ece3\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI GitHub topic repositories (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15906\"\u003e#15906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ec2a6adaf14c440bdcd0fd3f4ca203daa8c3ba6a\"\u003e\u003ccode\u003eec2a6ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9d7d7febd3a66844f948254c1ba4745b6cc16f40\"\u003e\u003ccode\u003e9d7d7fe\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for fr (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15897\"\u003e#15897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8dc852df4713efa998d126c5194302e9f06e7675\"\u003e\u003ccode\u003e8dc852d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.1...0.139.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.42.0 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\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/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.49.0\"\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.48 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `alembic` from 1.14.0 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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 `pydantic` from 2.12.5 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.13.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\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/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.5 to 49.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e49.0.0 - 2026-06-12\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for ``x86_64`` macOS has been removed.\n  We now only publish ``arm64`` wheels for macOS.\n* **BACKWARDS INCOMPATIBLE:** Support for 32-bit Windows has been removed.\n  Users should move to a 64-bit Python installation.\n* **BACKWARDS INCOMPATIBLE:** Removed the deprecated\n  ``PUBLIC_KEY_TYPES``, ``PRIVATE_KEY_TYPES``,\n  ``CERTIFICATE_PRIVATE_KEY_TYPES``, ``CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES``,\n  and ``CERTIFICATE_PUBLIC_KEY_TYPES`` type aliases. Use\n  ``PublicKeyTypes``, ``PrivateKeyTypes``, ``CertificateIssuerPrivateKeyTypes``,\n  ``CertificateIssuerPublicKeyTypes``, and ``CertificatePublicKeyTypes``\n  instead. These were deprecated in version 40.0.\n* **BACKWARDS INCOMPATIBLE:** :class:`~cryptography.hazmat.primitives.ciphers.algorithms.ChaCha20`\n  now treats the first 4 bytes of the ``nonce`` as a 32-bit little-endian block\n  counter (as defined in :rfc:`7539`) and tracks the number of bytes processed.\n  Attempting to encrypt or decrypt more data than the counter allows before it\n  would overflow now raises a :class:`ValueError` rather than silently diverging\n  from RFC 7539. Setting the counter portion of the ``nonce`` to zero allows\n  encrypting up to 256 GiB with a given nonce.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 certificate whose ECDSA or DSA\n  signature ``AlgorithmIdentifier`` contains encoded NULL parameters now raises\n  a :class:`ValueError`. Such certificates are invalid, but older versions of\n  Java emitted them; previously they loaded with a deprecation warning.\n* Fixed cross-compilation of the CFFI bindings when ``PYO3_CROSS_LIB_DIR``\n  is set. The build now derives the Python include directory from\n  ``PYO3_CROSS_LIB_DIR`` instead of querying the host interpreter, which\n  previously caused the build to fail during cross-compilations for embedded\n  systems, on hosts which have same-version Python development headers\n  installed as the target Python.\n* Added support for signing and verifying X.509 certificates, certificate\n  signing requests, and certificate revocation lists with\n  :doc:`/hazmat/primitives/asymmetric/mldsa` keys, as well as loading\n  certificates that contain ML-DSA public keys.\n* Added :meth:`~cryptography.hazmat.primitives.hpke.KEM.enc_length` to\n  :class:`~cryptography.hazmat.primitives.hpke.KEM` so callers can split the\n  encapsulated key from the ciphertext returned by\n  :meth:`~cryptography.hazmat.primitives.hpke.Suite.encrypt`.\n* :meth:`~cryptography.x509.verification.ExtensionPolicy.require_present`,\n  :meth:`~cryptography.x509.verification.ExtensionPolicy.may_be_present`, and\n  :meth:`~cryptography.x509.verification.ExtensionPolicy.require_not_present`\n  now accept any extension type. Previously only a fixed set of extension\n  types was supported, which made it impossible to account for otherwise\n  unrecognized critical extensions during path validation.\n* Added support for using :class:`~cryptography.x509.Certificate`,\n  :class:`~cryptography.x509.CertificateSigningRequest`, and\n  :class:`~cryptography.x509.CertificateRevocationList` as field types in\n  :doc:`/hazmat/asn1/index` structures.\n* Added :func:`~cryptography.hazmat.asn1.value_set`, a class decorator that\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e300bbe2f1bec75e5ee7e0ab7b196958831b3db6\"\u003e\u003ccode\u003ee300bbe\u003c/code\u003e\u003c/a\u003e bump version and changelog for 49.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15030\"\u003e#15030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/fa74cd8031b263edb50307f6d5a9a70df9f0a541\"\u003e\u003ccode\u003efa74cd8\u003c/code\u003e\u003c/a\u003e Add external mu (message representative) support for ML-DSA (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14979\"\u003e#14979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/f594db3f315e621473c58721961f502ba2a286ec\"\u003e\u003ccode\u003ef594db3\u003c/code\u003e\u003c/a\u003e chore(deps): bump openssl from 0.10.80 to 0.10.81 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15029\"\u003e#15029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/608e0119532153336310e51747724c6b9d107df7\"\u003e\u003ccode\u003e608e011\u003c/code\u003e\u003c/a\u003e chore(deps): bump openssl-sys from 0.9.116 to 0.9.117 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15028\"\u003e#15028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/a322bc4fb2bd2fd6f345fdb155cac226b1770dad\"\u003e\u003ccode\u003ea322bc4\u003c/code\u003e\u003c/a\u003e chore(deps): bump cc from 1.2.63 to 1.2.64 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15027\"\u003e#15027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/33181a74d41aa859b05f3720700a31c8e5b9e54c\"\u003e\u003ccode\u003e33181a7\u003c/code\u003e\u003c/a\u003e Reject critical nameConstraints extensions containing directoryName constrain...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/6080dc7f08e7473544b07df95833ff2ee843266e\"\u003e\u003ccode\u003e6080dc7\u003c/code\u003e\u003c/a\u003e Bump dependencies that dependabot isn't (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15026\"\u003e#15026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/121faa33a717559a8b0f0180b2d4e7785234af79\"\u003e\u003ccode\u003e121faa3\u003c/code\u003e\u003c/a\u003e chore(deps): bump virtualenv from 21.4.2 to 21.4.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15023\"\u003e#15023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/829520baa909eff95d64e5ebd165544d6fd60172\"\u003e\u003ccode\u003e829520b\u003c/code\u003e\u003c/a\u003e Add more robust processing for DH parameters. (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15016\"\u003e#15016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0f0500141cec535846f36c4c68d02b03126386b5\"\u003e\u003ccode\u003e0f05001\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15025\"\u003e#15025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.5...49.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.27.2 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\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/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\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/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.2...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `typer` from 0.24.1 to 0.26.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/typer/releases\"\u003etyper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.26.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Make second column of Rich help output reflect the type consistently, even when using \u003ccode\u003emetavar\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1410\"\u003e#1410\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Fix formatting in \u003ccode\u003eNoSuchOption.format_message()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1843\"\u003e#1843\u003c/a\u003e by \u003ca href=\"https://github.com/foomunleong\"\u003e\u003ccode\u003e@​foomunleong\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1850\"\u003e#1850\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix formatting for help link to support GitHub-specific overview edge-case. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1826\"\u003e#1826\u003c/a\u003e by \u003ca href=\"https://github.com/phalberg\"\u003e\u003ccode\u003e@​phalberg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1858\"\u003e#1858\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1857\"\u003e#1857\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1856\"\u003e#1856\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1854\"\u003e#1854\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Group Dependabot updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1853\"\u003e#1853\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update Dependabot ecosystem coverage. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1851\"\u003e#1851\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1848\"\u003e#1848\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.7 to 48.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1841\"\u003e#1841\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.13.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1839\"\u003e#1839\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1828\"\u003e#1828\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1829\"\u003e#1829\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]...\n\n_Description has been truncated_","html_url":"https://github.com/zak-li/Pxtly/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/zak-li%2FPxtly/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"2.0.49","new_version":"2.0.51","update_type":"patch","path":"/backend","pr_created_at":"2026-07-03T20:18:24.000Z","version_change":"2.0.49 → 2.0.51","issue":{"uuid":"4806101689","node_id":"PR_kwDOOX4WR87tt9RJ","number":174,"state":"closed","title":"Bump the all-dependencies group in /backend with 5 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-07-03T20:21:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-03T20:18:24.000Z","updated_at":"2026-07-03T20:21:39.000Z","time_to_close":193,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":5,"packages":[{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"greenlet","old_version":"3.5.0","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the all-dependencies group in /backend with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.20` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.0` | `3.5.3` |\n\nUpdates `pytest` from 9.0.3 to 9.1.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/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.1 (2026-06-19)\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/14220\"\u003e#14220\u003c/a\u003e: Fixed a logic bug in \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e which would might cause it to display incorrect \u0026quot;It matches \u003c!-- raw HTML omitted --\u003eFooError()\u003c!-- raw HTML omitted --\u003e which was paired with \u003c!-- raw HTML omitted --\u003eBarError\u003c!-- raw HTML omitted --\u003e\u0026quot; messages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14591\"\u003e#14591\u003c/a\u003e: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect \u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pytest\"\u003e\u003ccode\u003e@​pytest\u003c/code\u003e\u003c/a\u003e.mark.parametrize\u003c!-- raw HTML omitted --\u003e to fail with \u0026quot;duplicate parametrization of '\u0026lt;fixture name\u0026gt;'\u0026quot;.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14606\"\u003e#14606\u003c/a\u003e: Fixed \u003ccode\u003elist-item\u003c/code\u003e typing errors from mypy in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e \u003ccode\u003eargvalues\u003c/code\u003e parameter.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14608\"\u003e#14608\u003c/a\u003e: Fixed a regression in pytest 9.1.0 where \u003ccode\u003econftest.py\u003c/code\u003e files located in \u003ccode\u003e\u0026lt;invocation dir\u0026gt;/test*\u003c/code\u003e were no longer loaded as initial conftests when invoked without arguments.\nThis could cause certain hooks (like \u003ccode\u003epytest_addoption\u003c/code\u003e) in these files to not fire.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.1.0\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.0 (2026-06-13)\u003c/h1\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14533\"\u003e#14533\u003c/a\u003e: When using \u003ccode\u003e--doctest-modules\u003c/code\u003e, autouse fixtures with \u003ccode\u003emodule\u003c/code\u003e, \u003ccode\u003epackage\u003c/code\u003e or \u003ccode\u003esession\u003c/code\u003e scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.\u003c/p\u003e\n\u003cp\u003eIf this is undesirable, move the fixture definition to a \u003ccode\u003econftest.py\u003c/code\u003e file if possible.\u003c/p\u003e\n\u003cp\u003eTechnical explanation for those interested:\nWhen using \u003c!-- raw HTML omitted --\u003e--doctest-modules\u003c!-- raw HTML omitted --\u003e, pytest possibly collects Python modules twice, once as \u003ccode\u003epytest.Module\u003c/code\u003e and once as a \u003ccode\u003eDoctestModule\u003c/code\u003e (depending on the configuration).\nDue to improvements in pytest's fixture implementation, if e.g. the \u003ccode\u003eDoctestModule\u003c/code\u003e collects a fixture, it is now visible to it only, and not to the \u003ccode\u003eModule\u003c/code\u003e.\nThis means that both need to register the fixtures independently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations (removal in next major release)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10819\"\u003e#10819\u003c/a\u003e: Added a deprecation warning for class-scoped fixtures defined as instance methods (without \u003ccode\u003e@classmethod\u003c/code\u003e). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use \u003ccode\u003e@classmethod\u003c/code\u003e decorator instead -- by \u003ccode\u003eyastcher\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003e10819\u003c/code\u003e and \u003ccode\u003e14011\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12882\"\u003e#12882\u003c/a\u003e: Calling \u003ccode\u003erequest.getfixturevalue() \u0026lt;pytest.FixtureRequest.getfixturevalue\u0026gt;\u003c/code\u003e during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003edynamic-fixture-request-during-teardown\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13409\"\u003e#13409\u003c/a\u003e: Using non-\u003ccode\u003e~collections.abc.Collection\u003c/code\u003e iterables (such as generators, iterators, or custom iterable objects) for the \u003ccode\u003eargvalues\u003c/code\u003e parameter in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e and \u003ccode\u003emetafunc.parametrize \u0026lt;pytest.Metafunc.parametrize\u0026gt;\u003c/code\u003e is now deprecated.\u003c/p\u003e\n\u003cp\u003eThese iterables get exhausted after the first iteration,\nleading to tests getting unexpectedly skipped in cases such as running \u003ccode\u003epytest.main()\u003c/code\u003e multiple times,\nusing class-level parametrize decorators,\nor collecting tests multiple times.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003eparametrize-iterators\u003c/code\u003e for details and suggestions.\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 is now deprecated.\nUse \u003ccode\u003econfig.getini() \u0026lt;pytest.Config.getini\u0026gt;\u003c/code\u003e to access configuration values instead.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003econfig-inicfg\u003c/code\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14004\"\u003e#14004\u003c/a\u003e: Passing \u003ccode\u003ebaseid\u003c/code\u003e to \u003ccode\u003e~pytest.FixtureDef\u003c/code\u003e or \u003ccode\u003enodeid\u003c/code\u003e strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447\"\u003e\u003ccode\u003ecf470ec\u003c/code\u003e\u003c/a\u003e Prepare release version 9.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690\"\u003e\u003ccode\u003ee0c8ce6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14625\"\u003e#14625\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/a07c31a97...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757\"\u003e\u003ccode\u003e1b82d16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14624\"\u003e#14624\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/b375b79ec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53\"\u003e\u003ccode\u003e501c4bc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14596\"\u003e#14596\u003c/a\u003e from bluetech/doc-classmethod\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca\"\u003e\u003ccode\u003eb61f588\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14622\"\u003e#14622\u003c/a\u003e from chrisburr/fix-14608-initial-conftest-test-subdir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a\"\u003e\u003ccode\u003e9a567e0\u003c/code\u003e\u003c/a\u003e [automated] Update plugin list (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14617\"\u003e#14617\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14618\"\u003e#14618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384\"\u003e\u003ccode\u003eef8b299\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14620\"\u003e#14620\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/680f9f3ed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc\"\u003e\u003ccode\u003e66abd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e from bysiber/fix-stale-iexp-raisesgroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5\"\u003e\u003ccode\u003e79fbf93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14612\"\u003e#14612\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/974ed48b6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c\"\u003e\u003ccode\u003e0d312eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14611\"\u003e#14611\u003c/a\u003e from bluetech/parametrize-argvalues-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.3...9.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.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.20\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.15.20\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25887\"\u003e#25887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a warning instead of an error for unknown rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26113\"\u003e#26113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003enoqa\u003c/code\u003e shebang handling in \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26286\"\u003e#26286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26240\"\u003e#26240\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26371\"\u003e#26371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd versioning sections to custom crate READMEs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26317\"\u003e#26317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eruff_python_parser\u003c/code\u003e README for crates.io (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26315\"\u003e#26315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Clarify that \u003ccode\u003ePERF402\u003c/code\u003e applies to any iterable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26242\"\u003e#26242\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/dhruvmanila\"\u003e\u003ccode\u003e@​dhruvmanila\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\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/trilamsr\"\u003e\u003ccode\u003e@​trilamsr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.20\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.15.20\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-apple-darwin.tar.gz\"\u003eruff-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-apple-darwin.tar.gz\"\u003eruff-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-pc-windows-msvc.zip\"\u003eruff-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-pc-windows-msvc.zip\"\u003eruff-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-pc-windows-msvc.zip\"\u003eruff-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-unknown-linux-gnu.tar.gz\"\u003eruff-aarch64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-unknown-linux-gnu.tar.gz\"\u003eruff-i686-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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.15.20\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-25.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25887\"\u003e#25887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a warning instead of an error for unknown rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26113\"\u003e#26113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch \u003ccode\u003enoqa\u003c/code\u003e shebang handling in \u003ccode\u003eruff:ignore\u003c/code\u003e comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26286\"\u003e#26286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26240\"\u003e#26240\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26371\"\u003e#26371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd versioning sections to custom crate READMEs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26317\"\u003e#26317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003eruff_python_parser\u003c/code\u003e README for crates.io (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26315\"\u003e#26315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Clarify that \u003ccode\u003ePERF402\u003c/code\u003e applies to any iterable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26242\"\u003e#26242\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/dhruvmanila\"\u003e\u003ccode\u003e@​dhruvmanila\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\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/trilamsr\"\u003e\u003ccode\u003e@​trilamsr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.19\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-23.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport human-readable names when hovering suppression comments and in code actions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26114\"\u003e#26114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFall back to default settings when editor-only settings are invalid (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26244\"\u003e#26244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when inserting text at a notebook cell boundary (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26111\"\u003e#26111\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Update fix suggestions for \u003ccode\u003e__floor__\u003c/code\u003e, \u003ccode\u003e__trunc__\u003c/code\u003e, \u003ccode\u003e__length_hint__\u003c/code\u003e, and \u003ccode\u003e__matmul__\u003c/code\u003e variants (\u003ccode\u003ePLC2801\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26239\"\u003e#26239\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid allocating when parsing single string literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26200\"\u003e#26200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid reallocating singleton call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26223\"\u003e#26223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily create source files for lint diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26226\"\u003e#26226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize formatter text width and indentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26236\"\u003e#26236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReserve capacity for builtin bindings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26229\"\u003e#26229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip repeated-key checks for singleton dictionaries (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26228\"\u003e#26228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse ArrayVec for qualified name segments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26224\"\u003e#26224\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/f82a36b6baf8c0547a17bbde6c0d927ccd45d938\"\u003e\u003ccode\u003ef82a36b\u003c/code\u003e\u003c/a\u003e Bump 0.15.20 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26376\"\u003e#26376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/af329438b55d5aa8ca28725f17abbae63b5c815d\"\u003e\u003ccode\u003eaf32943\u003c/code\u003e\u003c/a\u003e Improve the summarise-ecosystem-results skill (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26378\"\u003e#26378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/485ebab5de692aad34720898cd80245b6092ba86\"\u003e\u003ccode\u003e485ebab\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eRUF076\u003c/code\u003e name from schema (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26371\"\u003e#26371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef81835ce3da615346584dc446de0fe26bfc154b\"\u003e\u003ccode\u003eef81835\u003c/code\u003e\u003c/a\u003e [ty] Implement rust-analyzer's \u0026quot;Click for full compiler diagnostic\u0026quot; feature (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/572b31e2377a701a7365f069f6ef87002962cb2b\"\u003e\u003ccode\u003e572b31e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26240\"\u003e#26240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f703f219d7fddd1a4abba9fa81e34773c185a4b9\"\u003e\u003ccode\u003ef703f21\u003c/code\u003e\u003c/a\u003e Allow human-readable names in rule selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25887\"\u003e#25887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0d726b28ee35413926145ffef4ac1143cae9ea1e\"\u003e\u003ccode\u003e0d726b2\u003c/code\u003e\u003c/a\u003e [ty] Reuse equality semantics for membership compatibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25955\"\u003e#25955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dbe6e9848c3f78fdaf543cfc000939ebc73b5f00\"\u003e\u003ccode\u003edbe6e98\u003c/code\u003e\u003c/a\u003e [ty] Infer definite equality comparison results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26337\"\u003e#26337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e700ea357a2196d76b58eb89b2031ddb5ca896e0\"\u003e\u003ccode\u003ee700ea3\u003c/code\u003e\u003c/a\u003e [ty] Prove TypedDict structural patterns exhaustive (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26285\"\u003e#26285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6a0d2ec93959d966430b8c39d4de5c3e8a88e911\"\u003e\u003ccode\u003e6a0d2ec\u003c/code\u003e\u003c/a\u003e [ty] Widen inferred class-valued instance attributes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26338\"\u003e#26338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.20\"\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.49 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `greenlet` from 3.5.0 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.0...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nobuddyorg/ProcrastinationBuddy/pull/174","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nobuddyorg%2FProcrastinationBuddy/issues/174","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/174/packages"}},{"old_version":"2.0.48","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-07-03T08:47:45.000Z","version_change":"2.0.48 → 2.0.51","issue":{"uuid":"4801945536","node_id":"PR_kwDOR335Os7tgbcc","number":59,"state":"closed","title":"Bump the pip-minor-patch group across 1 directory with 37 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-03T10:38:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-03T08:47:45.000Z","updated_at":"2026-07-03T10:38:43.000Z","time_to_close":6656,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-minor-patch","update_count":37,"packages":[{"name":"alembic","old_version":"1.14.1","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.13.0","new_version":"4.14.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"click","old_version":"8.3.1","new_version":"8.4.2","repository_url":"https://github.com/pallets/click"},{"name":"croniter","old_version":"6.2.2","new_version":"6.2.3","repository_url":"https://github.com/pallets-eco/croniter"},{"name":"fastapi","old_version":"0.135.3","new_version":"0.139.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cli","old_version":"0.0.24","new_version":"0.0.27","repository_url":"https://github.com/fastapi/fastapi-cli"},{"name":"fastapi-cloud-cli","old_version":"0.15.1","new_version":"0.22.1","repository_url":"https://github.com/fastapilabs/fastapi-cloud-cli"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"griffelib","old_version":"2.0.2","new_version":"2.1.0"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.11","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"jiter","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"mako","old_version":"1.3.10","new_version":"1.3.12","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"mcp","old_version":"1.27.1","new_version":"1.28.1","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"openai","old_version":"2.36.0","new_version":"2.44.0","repository_url":"https://github.com/openai/openai-python"},{"name":"openai-agents","old_version":"0.17.4","new_version":"0.17.7","repository_url":"https://github.com/openai/openai-agents-python"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pyjwt","old_version":"2.12.1","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyotp","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pyauth/pyotp"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"redis","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/redis/redis-py"},{"name":"rich-toolkit","old_version":"0.20.0","new_version":"0.20.1"},{"name":"rpds-py","old_version":"2026.5.1","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"rq","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/rq/rq"},{"name":"sentry-sdk","old_version":"2.57.0","new_version":"2.64.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sse-starlette","old_version":"3.4.4","new_version":"3.4.5","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.0.0","new_version":"1.3.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.67.3","new_version":"4.68.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.26.7","new_version":"0.26.8","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 37 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.14.1` | `1.18.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.1` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.4.2` |\n| [croniter](https://github.com/pallets-eco/croniter) | `6.2.2` | `6.2.3` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.139.0` |\n| [fastapi-cli](https://github.com/fastapi/fastapi-cli) | `0.0.24` | `0.0.27` |\n| [fastapi-cloud-cli](https://github.com/fastapilabs/fastapi-cloud-cli) | `0.15.1` | `0.22.1` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.3` |\n| griffelib | `2.0.2` | `2.1.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.18` |\n| [jiter](https://github.com/pydantic/jiter) | `0.14.0` | `0.16.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.10` | `1.3.12` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.1` | `1.28.1` |\n| [openai](https://github.com/openai/openai-python) | `2.36.0` | `2.44.0` |\n| [openai-agents](https://github.com/openai/openai-agents-python) | `0.17.4` | `0.17.7` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.1` | `2.14.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.47.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.1` | `2.13.0` |\n| [pyotp](https://github.com/pyauth/pyotp) | `2.9.0` | `2.10.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.32` |\n| [redis](https://github.com/redis/redis-py) | `8.0.0` | `8.0.1` |\n| rich-toolkit | `0.20.0` | `0.20.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.5.1` | `2026.6.3` |\n| [rq](https://github.com/rq/rq) | `2.9.0` | `2.10.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.57.0` | `2.64.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.51` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.4` | `3.4.5` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.0` | `1.3.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.3` | `4.68.3` |\n| [typer](https://github.com/fastapi/typer) | `0.26.7` | `0.26.8` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.42.0` | `0.49.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n\n\nUpdates `alembic` from 1.14.1 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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.13.0 to 4.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CapacityLimiter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Condition\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Event\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Lock\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.ResourceGuard\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Semaphore\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed cancellation exception escaping a cancel scope when triggered via \u003ccode\u003echeck_cancelled()\u003c/code\u003e in a worker thread (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1113\"\u003e#1113\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eTaskGroup\u003c/code\u003e raising \u003ccode\u003eAttributeError\u003c/code\u003e instead of a clear error when entered more than once (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1109\"\u003e#1109\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bahtya\"\u003e\u003ccode\u003e@​bahtya\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/149b9e907618fadf6840a4d3cebad533b0c7d033\"\u003e\u003ccode\u003e149b9e9\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/377518cd1160314f2fdf74f356ae9e848c94a065\"\u003e\u003ccode\u003e377518c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6 to 7 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b42a2f5e8e9910d0c57b970f9a747427a9da26f0\"\u003e\u003ccode\u003eb42a2f5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1185\"\u003e#1185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3ceb6ffbfa89be715f444550883356fbfbc13154\"\u003e\u003ccode\u003e3ceb6ff\u003c/code\u003e\u003c/a\u003e Allow 0 tokens in a CapacityLimiter instantiated outside an event loop (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e10d1db74f7a59cb283a1e4b3b22227da11c6f07\"\u003e\u003ccode\u003ee10d1db\u003c/code\u003e\u003c/a\u003e Add missing await to open_file() in file I/O concurrency example (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1dbc3b62256e5877bcf610aca98ba6e450d14c20\"\u003e\u003ccode\u003e1dbc3b6\u003c/code\u003e\u003c/a\u003e OutcomeException should not discard test runner_task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1180\"\u003e#1180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62\"\u003e\u003ccode\u003effe9133\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8\"\u003e\u003ccode\u003ef8b9f01\u003c/code\u003e\u003c/a\u003e Fixed asyncio lock waiter deadlocks after cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1145\"\u003e#1145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de\"\u003e\u003ccode\u003ed517ee1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49\"\u003e\u003ccode\u003e550b68e\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eanyio.run\u003c/code\u003e support \u003ccode\u003eAwaitable\u003c/code\u003e at runtime on all backends (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.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/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.2/\"\u003ehttps://pypi.org/project/click/8.4.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/34\"\u003ehttps://github.com/pallets/click/milestone/34\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by \u003ca href=\"https://redirect.github.com/pallets/click/issues/3126\"\u003e#3126\u003c/a\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3502\"\u003e#3502\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3043\"\u003e#3043\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3504\"\u003e#3504\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3508\"\u003e#3508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3509\"\u003e#3509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3059\"\u003e#3059\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3507\"\u003e#3507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3242\"\u003e#3242\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2542\"\u003e#2542\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3534\"\u003e#3534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from \u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3533\"\u003e#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2331\"\u003e#2331\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1884\"\u003e#1884\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3125\"\u003e#3125\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32\"\u003ehttps://github.com/pallets/click/milestone/32\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-06-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by {pr}\u003ccode\u003e3126\u003c/code\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. {issue}\u003ccode\u003e3502\u003c/code\u003e\n{issue}\u003ccode\u003e3043\u003c/code\u003e {pr}\u003ccode\u003e3504\u003c/code\u003e {pr}\u003ccode\u003e3508\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. {pr}\u003ccode\u003e3509\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n{issue}\u003ccode\u003e3059\u003c/code\u003e {pr}\u003ccode\u003e3507\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. {issue}\u003ccode\u003e3242\u003c/code\u003e {issue}\u003ccode\u003e2542\u003c/code\u003e {pr}\u003ccode\u003e3534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from {pr}\u003ccode\u003e3482\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e\n{pr}\u003ccode\u003e3533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. {pr}\u003ccode\u003e3578\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. {issue}\u003ccode\u003e2331\u003c/code\u003e {issue}\u003ccode\u003e1884\u003c/code\u003e {issue}\u003ccode\u003e3125\u003c/code\u003e {pr}\u003ccode\u003e3582\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. {issue}\u003ccode\u003e3458\u003c/code\u003e {pr}\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. {issue}\u003ccode\u003e3277\u003c/code\u003e {pr}\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eEnum\u003c/code\u003e values used as \u003ccode\u003eChoice\u003c/code\u003e options produces a\nvalid completion result. {issue}\u003ccode\u003e3015\u003c/code\u003e {pr}\u003ccode\u003e3471\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. {issue}\u003ccode\u003e3487\u003c/code\u003e {pr}\u003ccode\u003e3493\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e {pr}\u003ccode\u003e3482\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eopen_url\u003c/code\u003e on Windows when the file path contains spaces.\n{issue}\u003ccode\u003e2994\u003c/code\u003e {pr}\u003ccode\u003e3478\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e typing improvements. {pr}\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\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/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53\"\u003e\u003ccode\u003eb2e30a1\u003c/code\u003e\u003c/a\u003e Release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49\"\u003e\u003ccode\u003e7a16b20\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when module differs from distribution name (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc\"\u003e\u003ccode\u003ebec5928\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when top-level module differs from distribution...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd\"\u003e\u003ccode\u003e916883a\u003c/code\u003e\u003c/a\u003e Fix tests to not rely on \u003ccode\u003e-Wdefault\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3591\"\u003e#3591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520\"\u003e\u003ccode\u003e09195f6\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02\"\u003e\u003ccode\u003e1557e26\u003c/code\u003e\u003c/a\u003e Check for warning exception with idiomatic context manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3\"\u003e\u003ccode\u003ed9ff133\u003c/code\u003e\u003c/a\u003e Static typing improvements in \u003ccode\u003eclick.shell_completion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3460\"\u003e#3460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793\"\u003e\u003ccode\u003e762c97e\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581\"\u003e\u003ccode\u003e8929d39\u003c/code\u003e\u003c/a\u003e Convert changes to markdown. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd\"\u003e\u003ccode\u003e237be50\u003c/code\u003e\u003c/a\u003e Move changes headings down a level.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.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 `croniter` from 6.2.2 to 6.2.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/croniter/blob/main/CHANGELOG.rst\"\u003ecroniter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.2.3 (2026-07-02)\u003c/h2\u003e\n\u003cp\u003eFeatures and Improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Fix quadratic expansion of comma-separated range lists for a large speed-up on expressions with many ranges. [1d79fc6, [#231](https://github.com/pallets-eco/croniter/issues/231), @alhudz]\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Reject a zero step (e.g. ``5-5/0``) in equal and reversed cron ranges instead of silently accepting it. [ab27767, [#232](https://github.com/pallets-eco/croniter/issues/232), @alhudz]\n- Fix ``expand_from_start_time`` month low-bound off-by-one so stepped month ranges start on the correct month. [f329964, [#235](https://github.com/pallets-eco/croniter/issues/235), @alhudz]\n\nPackaging\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eFix zizmor-reported security findings in GitHub Actions workflows. [ed19f94, \u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/230\"\u003e#230\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eBump pinned build and CI dependencies via dependabot.\u003c/li\u003e\n\u003cli\u003eUpgrade locked development and build dependencies (\u003ccode\u003euv lock --upgrade\u003c/code\u003e).\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/22b59e05f5ca485c45596b2a9b580fddffbf753f\"\u003e\u003ccode\u003e22b59e0\u003c/code\u003e\u003c/a\u003e Prepare for release 6.2.3 (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/236\"\u003e#236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/ab277671adc8e446e8dc7f1e939eabf024b6199e\"\u003e\u003ccode\u003eab27767\u003c/code\u003e\u003c/a\u003e reject zero step in equal and reversed cron ranges (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/f329964223eeb29e7788b1a9d615b525148fec96\"\u003e\u003ccode\u003ef329964\u003c/code\u003e\u003c/a\u003e fix expand_from_start_time month low bound off-by-one (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/235\"\u003e#235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/9810279c20030954e2f1ed2cf5f1d34b98c6b07f\"\u003e\u003ccode\u003e9810279\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/d051aaf6342fbe9c559b9fcd99e6fb6f3bb63cb7\"\u003e\u003ccode\u003ed051aaf\u003c/code\u003e\u003c/a\u003e Bump hatchling from 1.29.0 to 1.30.1 in the pip-dependencies group (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/234\"\u003e#234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/1d79fc6555fb9208e290e0af10194eec638ae01c\"\u003e\u003ccode\u003e1d79fc6\u003c/code\u003e\u003c/a\u003e fix quadratic expansion of comma-separated range lists (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/231\"\u003e#231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/ed19f94c472ef665598693a554e6a5555be41f7b\"\u003e\u003ccode\u003eed19f94\u003c/code\u003e\u003c/a\u003e Fix zizmor-reported security findings in GitHub Actions workflows (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/230\"\u003e#230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/82657c37b873319570fee74c1864cb4d6153f543\"\u003e\u003ccode\u003e82657c3\u003c/code\u003e\u003c/a\u003e Bump trove-classifiers in the pip-dependencies group (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/229\"\u003e#229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/8e13827f77358beabf75245ad37d31a581cb6d1e\"\u003e\u003ccode\u003e8e13827\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/croniter/commit/e55d70bf2288e25c1ddf850fde703d56888772f2\"\u003e\u003ccode\u003ee55d70b\u003c/code\u003e\u003c/a\u003e Bump trove-classifiers in the pip-dependencies group across 1 directory (\u003ca href=\"https://redirect.github.com/pallets-eco/croniter/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/croniter/compare/6.2.2...6.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.135.3 to 0.139.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.139.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authentication for the frontend. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15908\"\u003e#15908\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15897\"\u003e#15897\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15895\"\u003e#15895\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15896\"\u003e#15896\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15899\"\u003e#15899\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15892\"\u003e#15892\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15891\"\u003e#15891\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15893\"\u003e#15893\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15898\"\u003e#15898\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15900\"\u003e#15900\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15890\"\u003e#15890\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15894\"\u003e#15894\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15888\"\u003e#15888\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15880\"\u003e#15880\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15889\"\u003e#15889\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15883\"\u003e#15883\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15885\"\u003e#15885\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15882\"\u003e#15882\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15887\"\u003e#15887\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15886\"\u003e#15886\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15881\"\u003e#15881\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15884\"\u003e#15884\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15879\"\u003e#15879\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15909\"\u003e#15909\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15906\"\u003e#15906\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15878\"\u003e#15878\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Remove not needed \u003ccode\u003eallow-unsafe-pr-checkout: true\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15876\"\u003e#15876\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15872\"\u003e#15872\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 10 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15870\"\u003e#15870\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15826\"\u003e#15826\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cecd96d9c6c318e0df1c40cedbc2e953381ddfd3\"\u003e\u003ccode\u003ececd96d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.139.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15910\"\u003e#15910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aea660936b55fdbd84270d24f892839388922dd6\"\u003e\u003ccode\u003eaea6609\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/319be508ce7db9ee5f52c3b9baa68c6cc1037c10\"\u003e\u003ccode\u003e319be50\u003c/code\u003e\u003c/a\u003e ✨ Support dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e, e.g. for automatic cookie authent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/66a90f6ee9c0cf58ec61b14f8925344d6f16eae5\"\u003e\u003ccode\u003e66a90f6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d30a3ebfc7d7fd7851ba4243677266c53cb9f154\"\u003e\u003ccode\u003ed30a3eb\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15909\"\u003e#15909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/122f1b58f4e0fabfefef3710a8c8247bb2bd820b\"\u003e\u003ccode\u003e122f1b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd6ece32eeb27c9ce164bd9170f9d8e1db1dacff\"\u003e\u003ccode\u003efd6ece3\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI GitHub topic repositories (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15906\"\u003e#15906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ec2a6adaf14c440bdcd0fd3f4ca203daa8c3ba6a\"\u003e\u003ccode\u003eec2a6ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9d7d7febd3a66844f948254c1ba4745b6cc16f40\"\u003e\u003ccode\u003e9d7d7fe\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for fr (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15897\"\u003e#15897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8dc852df4713efa998d126c5194302e9f06e7675\"\u003e\u003ccode\u003e8dc852d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.3...0.139.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-cli` from 0.0.24 to 0.0.27\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi-cli/releases\"\u003efastapi-cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.27\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eFASTAPI_PUBLIC_URL\u003c/code\u003e env var to configure app's public URL that is shown on startup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/381\"\u003e#381\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.26\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show tip on how to configure \u003ccode\u003eentrypoint\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/389\"\u003e#389\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.25\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show import string source. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/388\"\u003e#388\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Include the version of \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e to the output of \u003ccode\u003e--version\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/341\"\u003e#341\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs about contributing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/410\"\u003e#410\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/408\"\u003e#408\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/418\"\u003e#418\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.26.2 to 0.26.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/427\"\u003e#427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump fastapi-cloud-cli from 0.17.1 to 0.19.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/429\"\u003e#429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.9 to 0.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/428\"\u003e#428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/430\"\u003e#430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/426\"\u003e#426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump eps1lon/actions-label-merge-conflict from 3.0.3 to 3.1.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/425\"\u003e#425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.25.1 to 0.26.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/424\"\u003e#424\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/420\"\u003e#420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove old package stub slim, not user nor needed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/419\"\u003e#419\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/414\"\u003e#414\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/407\"\u003e#407\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/413\"\u003e#413\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/404\"\u003e#404\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/403\"\u003e#403\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump uvicorn from 0.44.0 to 0.46.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/400\"\u003e#400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.7 to 0.19.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/399\"\u003e#399\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 2.0.0 to 2.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/397\"\u003e#397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/373\"\u003e#373\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.34 to 0.0.35. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/396\"\u003e#396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/392\"\u003e#392\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/393\"\u003e#393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/394\"\u003e#394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.20.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/395\"\u003e#395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/391\"\u003e#391\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.25.0 to 0.25.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/390\"\u003e#390\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.32 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/387\"\u003e#387\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi-cli/blob/main/release-notes.md\"\u003efastapi-cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.27 (2026-06-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eFASTAPI_PUBLIC_URL\u003c/code\u003e env var to configure app's public URL that is shown on startup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/381\"\u003e#381\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.26 (2026-06-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show tip on how to configure \u003ccode\u003eentrypoint\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/389\"\u003e#389\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.25 (2026-06-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸 Show import string source. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/388\"\u003e#388\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Include the version of \u003ccode\u003efastapi-cloud-cli\u003c/code\u003e to the output of \u003ccode\u003e--version\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/341\"\u003e#341\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs about contributing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/410\"\u003e#410\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/408\"\u003e#408\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/418\"\u003e#418\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.26.2 to 0.26.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/427\"\u003e#427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump fastapi-cloud-cli from 0.17.1 to 0.19.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/429\"\u003e#429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.9 to 0.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/428\"\u003e#428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/430\"\u003e#430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/426\"\u003e#426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump eps1lon/actions-label-merge-conflict from 3.0.3 to 3.1.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/425\"\u003e#425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typer from 0.25.1 to 0.26.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/424\"\u003e#424\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/420\"\u003e#420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove old package stub slim, not user nor needed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/419\"\u003e#419\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/414\"\u003e#414\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/407\"\u003e#407\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/413\"\u003e#413\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/404\"\u003e#404\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/403\"\u003e#403\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump uvicorn from 0.44.0 to 0.46.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/400\"\u003e#400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump rich-toolkit from 0.19.7 to 0.19.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/399\"\u003e#399\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 2.0.0 to 2.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/397\"\u003e#397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/373\"\u003e#373\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.34 to 0.0.35. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/396\"\u003e#396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/392\"\u003e#392\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/393\"\u003e#393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/394\"\u003e#394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.20.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/pull/395\"\u003e#395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/760451b3fbd3814902a36696959b5e49f6c80dad\"\u003e\u003ccode\u003e760451b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.27 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/e3893efbeb9d50a000ef997b7f54bc08a0f27fa2\"\u003e\u003ccode\u003ee3893ef\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/46aca093b0835b00476c7b45d408e7cbaf960980\"\u003e\u003ccode\u003e46aca09\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eFASTAPI_PUBLIC_URL\u003c/code\u003e env var to configure app's public URL that is show...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/04c12c244febb6b3939df6011b5a4bd5a7bca89c\"\u003e\u003ccode\u003e04c12c2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.26 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/434\"\u003e#434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/96bd5ab16b7ae16bb3746c2eff2fed31e3a7bd5d\"\u003e\u003ccode\u003e96bd5ab\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/cd37a8e50f9b37a9f4571a8e6938f274a56297c9\"\u003e\u003ccode\u003ecd37a8e\u003c/code\u003e\u003c/a\u003e 🚸 Show tip on how to configure \u003ccode\u003eentrypoint\u003c/code\u003e in \u003ccode\u003epyproject.toml\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/8c4ab6663187c5fcdb68fe523c70ff265a9c50da\"\u003e\u003ccode\u003e8c4ab66\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.25 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/433\"\u003e#433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/b6bf5b53d87f64cad2e56541008b6f3a62305b1c\"\u003e\u003ccode\u003eb6bf5b5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/572ea4c0f286c5f70d407b30d2f444e69e4c1f65\"\u003e\u003ccode\u003e572ea4c\u003c/code\u003e\u003c/a\u003e 👷 Add pre-commit hook to catch typos (\u003ca href=\"https://redirect.github.com/fastapi/fastapi-cli/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi-cli/commit/1428d40976c1bb2585941d9961898ce6b9d0f448\"\u003e\u003ccode\u003e1428d40\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi-cli/compare/0.0.24...0.0.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-cloud-cli` from 0.15.1 to 0.22.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/releases\"\u003efastapi-cloud-cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Validate app logs tail limit before request. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/287\"\u003e#287\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.22.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add cloud apps update command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/280\"\u003e#280\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Remove \u003ccode\u003esrc\u003c/code\u003e from \u003ccode\u003edirectory\u003c/code\u003e option description and error message. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/279\"\u003e#279\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/276\"\u003e#276\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump sentry-sdk from 2.62.0 to 2.63.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/277\"\u003e#277\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 6.0.3 to 7.0.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/275\"\u003e#275\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/278\"\u003e#278\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add --json support for logout command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/269\"\u003e#269\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci setup command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/268\"\u003e#268\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci print-workflow command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/267\"\u003e#267\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens delete command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/264\"\u003e#264\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens create command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/263\"\u003e#263\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens list command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/262\"\u003e#262\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Handle invalid apps create --directory input. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/265\"\u003e#265\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Use new deployment route to fetch deployment. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/266\"\u003e#266\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Update deployment data when triggering upload complete. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/250\"\u003e#250\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Improve error messages for logs. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/249\"\u003e#249\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/260\"\u003e#260\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- 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/fastapilabs/fastapi-cloud-cli/blob/main/release-notes.md\"\u003efastapi-cloud-cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.22.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Validate app logs tail limit before request. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/287\"\u003e#287\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.22.0 (2026-06-30)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add cloud apps update command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/280\"\u003e#280\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Remove \u003ccode\u003esrc\u003c/code\u003e from \u003ccode\u003edirectory\u003c/code\u003e option description and error message. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/279\"\u003e#279\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/276\"\u003e#276\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump sentry-sdk from 2.62.0 to 2.63.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/277\"\u003e#277\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 6.0.3 to 7.0.0 in the github-actions group. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/275\"\u003e#275\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/278\"\u003e#278\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.21.0 (2026-06-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add --json support for logout command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/269\"\u003e#269\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci setup command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/268\"\u003e#268\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add cloud ci print-workflow command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/267\"\u003e#267\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens delete command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/264\"\u003e#264\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens create command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/263\"\u003e#263\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add tokens list command. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/262\"\u003e#262\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Handle invalid apps create --directory input. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/265\"\u003e#265\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Use new deployment route to fetch deployment. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/266\"\u003e#266\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Update deployment data when triggering upload complete. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/250\"\u003e#250\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Improve error messages for logs. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/249\"\u003e#249\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/260\"\u003e#260\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/20f9fe34e1b95fb925e168f9d030b9d52cee5f8a\"\u003e\u003ccode\u003e20f9fe3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.22.1 (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/e2b4722fc22b3c3e6c0babafa5ad21862372ff52\"\u003e\u003ccode\u003ee2b4722\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/5...\n\n_Description has been truncated_","html_url":"https://github.com/manasijatech/ananta-market-stack/pull/59","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/manasijatech%2Fananta-market-stack/issues/59","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/59/packages"}},{"old_version":"2.0.48","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-07-01T23:36:21.000Z","version_change":"2.0.48 → 2.0.51","issue":{"uuid":"4789977343","node_id":"PR_kwDOLfkiw87s5jyS","number":15093,"state":"open","title":"chore(deps): bump the version-all group across 1 directory with 28 updates","user":"dependabot[bot]","labels":["python","dependencies","type: chore"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T23:36:21.000Z","updated_at":"2026-07-01T23:36:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"version-all","update_count":28,"packages":[{"name":"authlib","old_version":"1.6.12","new_version":"1.7.2","repository_url":"https://github.com/authlib/authlib"},{"name":"cloud-sql-python-connector","old_version":"1.20.1","new_version":"1.20.3","repository_url":"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"stripe","old_version":"11.6.0","new_version":"15.3.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-keycloak","old_version":"5.12.0","new_version":"7.1.1","repository_url":"https://github.com/marcospereirampj/python-keycloak"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"resend","old_version":"2.27.0","new_version":"2.32.2","repository_url":"https://github.com/resendlabs/resend-python"},{"name":"slack-sdk","old_version":"3.41.0","new_version":"3.42.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"ddtrace","old_version":"3.13.0","new_version":"4.10.5","repository_url":"https://github.com/DataDog/dd-trace-py"},{"name":"posthog","old_version":"7.9.12","new_version":"7.20.5","repository_url":"https://github.com/posthog/posthog-python"},{"name":"coredis","old_version":"4.24.0","new_version":"5.7.0","repository_url":"https://github.com/alisaifee/coredis"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.48.0","new_version":"0.52.0","repository_url":"https://github.com/shap/shap"},{"name":"google-cloud-recaptcha-enterprise","old_version":"1.31.0","new_version":"1.32.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pandas","old_version":"2.3.3","new_version":"3.0.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mcp","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"ruff","old_version":"0.8.3","new_version":"0.15.19","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.13.0","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.1.0","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"types-requests","old_version":"2.33.0.20260402","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"reportlab","old_version":"4.4.10","new_version":"5.0.0"},{"name":"gevent","old_version":"25.9.1","new_version":"26.5.0","repository_url":"https://github.com/gevent/gevent"}],"path":null,"ecosystem":"pip"},"body":"Bumps the version-all group with 28 updates in the /enterprise directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [authlib](https://github.com/authlib/authlib) | `1.6.12` | `1.7.2` |\n| [cloud-sql-python-connector](https://github.com/GoogleCloudPlatform/cloud-sql-python-connector) | `1.20.1` | `1.20.3` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [stripe](https://github.com/stripe/stripe-python) | `11.6.0` | `15.3.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n| [python-keycloak](https://github.com/marcospereirampj/python-keycloak) | `5.12.0` | `7.1.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.51` |\n| [resend](https://github.com/resendlabs/resend-python) | `2.27.0` | `2.32.2` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.41.0` | `3.42.0` |\n| [ddtrace](https://github.com/DataDog/dd-trace-py) | `3.13.0` | `4.10.5` |\n| [posthog](https://github.com/posthog/posthog-python) | `7.9.12` | `7.20.5` |\n| [coredis](https://github.com/alisaifee/coredis) | `4.24.0` | `5.7.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.0` |\n| [shap](https://github.com/shap/shap) | `0.48.0` | `0.52.0` |\n| [google-cloud-recaptcha-enterprise](https://github.com/googleapis/google-cloud-python) | `1.31.0` | `1.32.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.3` | `3.0.3` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.0` | `1.28.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.8.3` | `0.15.19` |\n| [mypy](https://github.com/python/mypy) | `1.13.0` | `2.1.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.1.0` | `4.6.0` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260402` | `2.33.0.20260518` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [reportlab](https://www.reportlab.com/) | `4.4.10` | `5.0.0` |\n| [gevent](https://github.com/gevent/gevent) | `25.9.1` | `26.5.0` |\n\n\nUpdates `authlib` from 1.6.12 to 1.7.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.7.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the readme links by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/886\"\u003eauthlib/authlib#886\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow non-recommended algorithms in ClientSecretJWT and PrivateKey by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/887\"\u003eauthlib/authlib#887\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate BCP47 language tags with a regex by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/873\"\u003eauthlib/authlib#873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RFC7523 signing with non RSA keys by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/884\"\u003eauthlib/authlib#884\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.1...v1.7.2\"\u003ehttps://github.com/authlib/authlib/compare/v1.7.1...v1.7.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.7.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix authlib.jose deprecation warning poping from _joserfc_helpers by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/881\"\u003eauthlib/authlib#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix redirecting to unvalidated \u003ccode\u003eredirect_uri\u003c/code\u003e on \u003ccode\u003eInvalidScopeError\u003c/code\u003e  in \u003ccode\u003eOpenIDImplicitGrant\u003c/code\u003e and \u003ccode\u003eOpenIDHybridGrant\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.0...v1.7.1\"\u003ehttps://github.com/authlib/authlib/compare/v1.7.0...v1.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.7.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAuthorization and token endpoints request empty scope parameter management by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/847\"\u003eauthlib/authlib#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport from Python 3.10 to 3.14 by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/850\"\u003eauthlib/authlib#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow composition of AuthorizationServerMetadata by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/853\"\u003eauthlib/authlib#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake require_oauth parenthesis optional by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/855\"\u003eauthlib/authlib#855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eexpires_at\u003c/code\u003e behavior when its value is 0 by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/854\"\u003eauthlib/authlib#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigration to joserfc by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/852\"\u003eauthlib/authlib#852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRP-initiated logout by \u003ca href=\"https://github.com/frohrlich\"\u003e\u003ccode\u003e@​frohrlich\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/849\"\u003eauthlib/authlib#849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eget_jwt_config\u003c/code\u003e by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/858\"\u003eauthlib/authlib#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(ci): Update PyPy version from 3.10 to 3.11 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/863\"\u003eauthlib/authlib#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove \u0026quot;none\u0026quot; from default authlib.jose.jwt algorithms by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/860\"\u003eauthlib/authlib#860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: normalize resolve_client_public_key method by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/861\"\u003eauthlib/authlib#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement rfc9700 PKCE downgrade countermeasure by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/864\"\u003eauthlib/authlib#864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse correct syntax for tox.requires in tox.ini by \u003ca href=\"https://github.com/alex-ball\"\u003e\u003ccode\u003e@​alex-ball\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/868\"\u003eauthlib/authlib#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet client session User-Agent when fetching server metadata and JWKs by \u003ca href=\"https://github.com/alex-ball\"\u003e\u003ccode\u003e@​alex-ball\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/867\"\u003eauthlib/authlib#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: use the real application object for Flask by \u003ca href=\"https://github.com/nblock\"\u003e\u003ccode\u003e@​nblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/869\"\u003eauthlib/authlib#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept the issuer URL as a valid audience by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/865\"\u003eauthlib/authlib#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't nest InvalidTokenError extra attribute by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/872\"\u003eauthlib/authlib#872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocumentation overhaul by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/875\"\u003eauthlib/authlib#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README.md docs.authlib.org/en/latest =\u0026gt; docs.authlib.org/en/stable by \u003ca href=\"https://github.com/guillett\"\u003e\u003ccode\u003e@​guillett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/876\"\u003eauthlib/authlib#876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge release/1.6 branch by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/877\"\u003eauthlib/authlib#877\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/frohrlich\"\u003e\u003ccode\u003e@​frohrlich\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/849\"\u003eauthlib/authlib#849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/863\"\u003eauthlib/authlib#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alex-ball\"\u003e\u003ccode\u003e@​alex-ball\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/868\"\u003eauthlib/authlib#868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nblock\"\u003e\u003ccode\u003e@​nblock\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/869\"\u003eauthlib/authlib#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/guillett\"\u003e\u003ccode\u003e@​guillett\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/876\"\u003eauthlib/authlib#876\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.10...v1.7.0\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.10...v1.7.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a0b76fac3fa114d7759af2010546bfc332364b63\"\u003e\u003ccode\u003ea0b76fa\u003c/code\u003e\u003c/a\u003e chore: bump to 1.7.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/c85c7f2b02faf2667f62b27aa60df042dbc9b4ab\"\u003e\u003ccode\u003ec85c7f2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/884\"\u003e#884\u003c/a\u003e from azmeuk/852-rfc7523-key-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/a3b2adda43b4452ba9f384d224f95848974b4eb4\"\u003e\u003ccode\u003ea3b2add\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/873\"\u003e#873\u003c/a\u003e from azmeuk/bcp47\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/f2578eaa198aedbaaaf3bb00eccc451e15e45e3a\"\u003e\u003ccode\u003ef2578ea\u003c/code\u003e\u003c/a\u003e fix: Import RSAKey in auth.py for additional key support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/b57182cf46a53da19623208dd852270ddec8ebcc\"\u003e\u003ccode\u003eb57182c\u003c/code\u003e\u003c/a\u003e fix: fallback support RSAKey when client_secret is text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/4e7590292ca9f948a0766640b27025618750e6c1\"\u003e\u003ccode\u003e4e75902\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into 852-rfc7523-key-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5eb4a860600ea2f3acc1a2a9c3e621a430da9d0f\"\u003e\u003ccode\u003e5eb4a86\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/887\"\u003e#887\u003c/a\u003e from azmeuk/883-alg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5633f37c47bd8352b962f982cb916bc8b95bb5d5\"\u003e\u003ccode\u003e5633f37\u003c/code\u003e\u003c/a\u003e fix: allow non-recommended algorithms in ClientSecretJWT and PrivateKeyJWT\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/4c8e7b381aaef68f60e2323a25ba96cdb346f82f\"\u003e\u003ccode\u003e4c8e7b3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/886\"\u003e#886\u003c/a\u003e from azmeuk/885-readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/23b333e48a17ebf9f032a0e0f9eb3f990a06f97b\"\u003e\u003ccode\u003e23b333e\u003c/code\u003e\u003c/a\u003e docs: fix the readme links\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/1.6.12...v1.7.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cloud-sql-python-connector` from 1.20.1 to 1.20.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/releases\"\u003ecloud-sql-python-connector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.20.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.2...v1.20.3\"\u003e1.20.3\u003c/a\u003e (2026-05-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1422\"\u003e#1422\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/6bb9b37ec441d260008e08db837d422a2ad15241\"\u003e6bb9b37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate dependencies to latest as of 2026-05-04 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1406\"\u003e#1406\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/d1282d88fc884be954e1f38cfaa62be2c03b2ee0\"\u003ed1282d8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.20.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.1...v1.20.2\"\u003e1.20.2\u003c/a\u003e (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest  (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1402\"\u003e#1402\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4bbe1f80581f974e1bd83eecf5f278fcf47026ae\"\u003e4bbe1f8\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/GoogleCloudPlatform/cloud-sql-python-connector/blob/main/CHANGELOG.md\"\u003ecloud-sql-python-connector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.2...v1.20.3\"\u003e1.20.3\u003c/a\u003e (2026-05-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1422\"\u003e#1422\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/6bb9b37ec441d260008e08db837d422a2ad15241\"\u003e6bb9b37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate dependencies to latest as of 2026-05-04 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1406\"\u003e#1406\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/d1282d88fc884be954e1f38cfaa62be2c03b2ee0\"\u003ed1282d8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.1...v1.20.2\"\u003e1.20.2\u003c/a\u003e (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependencies to latest  (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1402\"\u003e#1402\u003c/a\u003e) (\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4bbe1f80581f974e1bd83eecf5f278fcf47026ae\"\u003e4bbe1f8\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/GoogleCloudPlatform/cloud-sql-python-connector/commit/4aaee21a90a9711b40c65fa10ffa888779901796\"\u003e\u003ccode\u003e4aaee21\u003c/code\u003e\u003c/a\u003e chore(main): release 1.20.3 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1409\"\u003e#1409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/90d57e4e3689c03303b684ff38744ca34bc716db\"\u003e\u003ccode\u003e90d57e4\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest-asyncio to v1.4.0 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1404\"\u003e#1404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/6bb9b37ec441d260008e08db837d422a2ad15241\"\u003e\u003ccode\u003e6bb9b37\u003c/code\u003e\u003c/a\u003e fix: update dependencies to latest (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1422\"\u003e#1422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/d1282d88fc884be954e1f38cfaa62be2c03b2ee0\"\u003e\u003ccode\u003ed1282d8\u003c/code\u003e\u003c/a\u003e fix: Update dependencies to latest as of 2026-05-04 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1406\"\u003e#1406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/31e418373eb19d042b233e28344392773ea1b57a\"\u003e\u003ccode\u003e31e4183\u003c/code\u003e\u003c/a\u003e chore(main): release 1.20.2 (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1403\"\u003e#1403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4bbe1f80581f974e1bd83eecf5f278fcf47026ae\"\u003e\u003ccode\u003e4bbe1f8\u003c/code\u003e\u003c/a\u003e fix: update dependencies to latest  (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1402\"\u003e#1402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/0431af87b2613af56a013043bbd4b475bbd1edfe\"\u003e\u003ccode\u003e0431af8\u003c/code\u003e\u003c/a\u003e chore: Fix the build.sh deps command (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/513a91f040ca34d7616742ab0e2ed12eb01ce4b2\"\u003e\u003ccode\u003e513a91f\u003c/code\u003e\u003c/a\u003e chore: update blunderbuss (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/commit/4eff80b461a59bd49874047327d4ece140cdf333\"\u003e\u003ccode\u003e4eff80b\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pyasn1 to v0.6.3 [security] (\u003ca href=\"https://redirect.github.com/GoogleCloudPlatform/cloud-sql-python-connector/issues/1386\"\u003e#1386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/GoogleCloudPlatform/cloud-sql-python-connector/compare/v1.20.1...v1.20.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2-binary` from 2.9.11 to 2.9.12\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\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/psycopg/psycopg2/commit/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `stripe` from 11.6.0 to 15.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/releases\"\u003estripe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.3.0\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-06-24.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1836\"\u003e#1836\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003erelease_details\u003c/code\u003e on \u003ccode\u003eReserve.Hold\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003etax_fund\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eBilling.CreditGrant.priority\u003c/code\u003e to be required\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebuyer_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Blik\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Blik\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Bizum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003etransaction_link_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.network\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003eusdsui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003efingerprint\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Pix\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Pix\u003c/code\u003e, and \u003ccode\u003eSetupAttempt.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebilling_cycle_anchor_config\u003c/code\u003e on \u003ccode\u003echeckout.SessionCreateParamsSubscriptionDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ewechat_pay\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emastercard_compliance\u003c/code\u003e on \u003ccode\u003eDispute.Evidence.EnhancedEvidence\u003c/code\u003e, \u003ccode\u003eDispute.EvidenceDetail.EnhancedEligibility\u003c/code\u003e, and \u003ccode\u003eDisputeModifyParamsEvidenceEnhancedEvidence\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003emastercard_compliance\u003c/code\u003e on enum \u003ccode\u003eDispute.enhanced_eligibility_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003estatus_details\u003c/code\u003e on \u003ccode\u003eFinancialConnections.Account\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003evalidated\u003c/code\u003e on enum \u003ccode\u003eIdentity.VerificationSession.Redaction.status\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoiceCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoice.PaymentSetting.payment_method_types\u003c/code\u003e and \u003ccode\u003eSubscription.PaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003estored_credential_usage\u003c/code\u003e on \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.description\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.description\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esetup_future_usage\u003c/code\u003e on \u003ccode\u003ePaymentIntent.PaymentMethodOption.Satispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionSatispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionSatispay\u003c/code\u003e, and \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionSatispay\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003ePaymentRecordReportRefundParams.refunded\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esatispay\u003c/code\u003e on \u003ccode\u003eSetupAttempt.PaymentMethodDetail\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecustom_fields\u003c/code\u003e, \u003ccode\u003edescription\u003c/code\u003e, and \u003ccode\u003efooter\u003c/code\u003e on \u003ccode\u003eSubscription.InvoiceSetting\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsInvoiceSetting\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsInvoiceSetting\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epayment_method_options\u003c/code\u003e and \u003ccode\u003epayment_method\u003c/code\u003e on \u003ccode\u003eTopupCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003e2026-06-24.dahlia\u003c/code\u003e on enum \u003ccode\u003eWebhookEndpointCreateParams.api_version\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emode\u003c/code\u003e on \u003ccode\u003eV2.Commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003eV2.Commerce.ProductCatalogImport.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eV2.Core.Account.Configuration.Merchant.Capability\u003c/code\u003e, \u003ccode\u003ev2.core.AccountCreateParamsConfigurationMerchantCapability\u003c/code\u003e, and \u003ccode\u003ev2.core.AccountModifyParamsConfigurationMerchantCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecrypto_money_manager\u003c/code\u003e and \u003ccode\u003emoney_manager\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003ecrypto_storer\u003c/code\u003e and \u003ccode\u003estorer\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003ev2.commerce.ProductCatalogImportCreateParams.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit_payments\u003c/code\u003e on enum \u003ccode\u003eEventsV2CoreAccountIncludingConfigurationMerchantCapabilityStatusUpdatedEvent.updated_capability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for error codes \u003ccode\u003eanomalous_money_movement_request\u003c/code\u003e, \u003ccode\u003efailed_tax_calculation\u003c/code\u003e, \u003ccode\u003efinancial_account_balance_does_not_support_currency\u003c/code\u003e, \u003ccode\u003efinancial_account_capability_not_enabled\u003c/code\u003e, and \u003ccode\u003efinancial_account_capability_restricted\u003c/code\u003e on \u003ccode\u003eInvoice.LastFinalizationError\u003c/code\u003e, \u003ccode\u003ePaymentIntent.LastPaymentError\u003c/code\u003e, \u003ccode\u003eSetupAttempt.SetupError\u003c/code\u003e, \u003ccode\u003eSetupIntent.LastSetupError\u003c/code\u003e, \u003ccode\u003eStripeError\u003c/code\u003e, and \u003ccode\u003eTerminal.Reader.Action.ApiError\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/stripe/stripe-python/blob/v15.3.0/CHANGELOG.md\"\u003ethe changelog for more details\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev15.3.0b1\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-05-27.private.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1801\"\u003e#1801\u003c/a\u003e Update generated code for beta\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epause\u003c/code\u003e method on resource \u003ccode\u003eSubscription\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eretrieve\u003c/code\u003e method on resource \u003ccode\u003ev2.iam.ActivityLog\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003emastercard\u003c/code\u003e on enum \u003ccode\u003eIssuing.Settlement.network\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change type of \u003ccode\u003eProductCatalog.TrialOffer.EndBehavior.Transition.price\u003c/code\u003e from \u003ccode\u003estring\u003c/code\u003e to \u003ccode\u003eexpandable($Price)\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stripe/stripe-python/blob/master/CHANGELOG.md\"\u003estripe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e15.3.0 - 2026-06-24\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-06-24.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1836\"\u003e#1836\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003erelease_details\u003c/code\u003e on \u003ccode\u003eReserve.Hold\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003etax_fund\u003c/code\u003e on enum \u003ccode\u003eBalanceTransaction.type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eBilling.CreditGrant.priority\u003c/code\u003e to be required\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebuyer_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Bizum\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Blik\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Bizum\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Blik\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Bizum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003etransaction_link_id\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.network\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.network\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003eusdsui\u003c/code\u003e on enums \u003ccode\u003eCharge.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e, and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Crypto.token_currency\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003efingerprint\u003c/code\u003e on \u003ccode\u003eCharge.PaymentMethodDetail.Pix\u003c/code\u003e, \u003ccode\u003eConfirmationToken.PaymentMethodPreview.Pix\u003c/code\u003e, \u003ccode\u003ePaymentMethod.Pix\u003c/code\u003e, and \u003ccode\u003eSetupAttempt.PaymentMethodDetail.Pix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntent.PaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOption\u003c/code\u003e, \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOption\u003c/code\u003e, and \u003ccode\u003echeckout.SessionCreateParamsPaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebilling_cycle_anchor_config\u003c/code\u003e on \u003ccode\u003echeckout.SessionCreateParamsSubscriptionDatum\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ewechat_pay\u003c/code\u003e on \u003ccode\u003eCheckout.Session.PaymentMethodOption\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emastercard_compliance\u003c/code\u003e on \u003ccode\u003eDispute.Evidence.EnhancedEvidence\u003c/code\u003e, \u003ccode\u003eDispute.EvidenceDetail.EnhancedEligibility\u003c/code\u003e, and \u003ccode\u003eDisputeModifyParamsEvidenceEnhancedEvidence\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003emastercard_compliance\u003c/code\u003e on enum \u003ccode\u003eDispute.enhanced_eligibility_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003estatus_details\u003c/code\u003e on \u003ccode\u003eFinancialConnections.Account\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003evalidated\u003c/code\u003e on enum \u003ccode\u003eIdentity.VerificationSession.Redaction.status\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoiceCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eInvoiceModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsPaymentSetting.payment_method_types\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsPaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esatispay\u003c/code\u003e on enums \u003ccode\u003eInvoice.PaymentSetting.payment_method_types\u003c/code\u003e and \u003ccode\u003eSubscription.PaymentSetting.payment_method_types\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003estored_credential_usage\u003c/code\u003e on \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.description\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.description\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.iin\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003e⚠️ Change \u003ccode\u003ePaymentAttemptRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e and \u003ccode\u003ePaymentRecord.PaymentMethodDetail.Card.issuer\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esetup_future_usage\u003c/code\u003e on \u003ccode\u003ePaymentIntent.PaymentMethodOption.Satispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentConfirmParamsPaymentMethodOptionSatispay\u003c/code\u003e, \u003ccode\u003ePaymentIntentCreateParamsPaymentMethodOptionSatispay\u003c/code\u003e, and \u003ccode\u003ePaymentIntentModifyParamsPaymentMethodOptionSatispay\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003ePaymentRecordReportRefundParams.refunded\u003c/code\u003e to be optional\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esatispay\u003c/code\u003e on \u003ccode\u003eSetupAttempt.PaymentMethodDetail\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecustom_fields\u003c/code\u003e, \u003ccode\u003edescription\u003c/code\u003e, and \u003ccode\u003efooter\u003c/code\u003e on \u003ccode\u003eSubscription.InvoiceSetting\u003c/code\u003e, \u003ccode\u003eSubscriptionCreateParamsInvoiceSetting\u003c/code\u003e, and \u003ccode\u003eSubscriptionModifyParamsInvoiceSetting\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epayment_method_options\u003c/code\u003e and \u003ccode\u003epayment_method\u003c/code\u003e on \u003ccode\u003eTopupCreateParams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003e2026-06-24.dahlia\u003c/code\u003e on enum \u003ccode\u003eWebhookEndpointCreateParams.api_version\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emode\u003c/code\u003e on \u003ccode\u003eV2.Commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003eV2.Commerce.ProductCatalogImport.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003esunbit_payments\u003c/code\u003e on \u003ccode\u003eV2.Core.Account.Configuration.Merchant.Capability\u003c/code\u003e, \u003ccode\u003ev2.core.AccountCreateParamsConfigurationMerchantCapability\u003c/code\u003e, and \u003ccode\u003ev2.core.AccountModifyParamsConfigurationMerchantCapability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecrypto_money_manager\u003c/code\u003e and \u003ccode\u003emoney_manager\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Remove support for \u003ccode\u003ecrypto_storer\u003c/code\u003e and \u003ccode\u003estorer\u003c/code\u003e on \u003ccode\u003ev2.core.AccountModifyParamsIdentityAttestationTermsOfService\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for new value \u003ccode\u003epromotion\u003c/code\u003e on enum \u003ccode\u003ev2.commerce.ProductCatalogImportCreateParams.feed_type\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e⚠️ Add support for new value \u003ccode\u003esunbit_payments\u003c/code\u003e on enum \u003ccode\u003eEventsV2CoreAccountIncludingConfigurationMerchantCapabilityStatusUpdatedEvent.updated_capability\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for error codes \u003ccode\u003eanomalous_money_movement_request\u003c/code\u003e, \u003ccode\u003efailed_tax_calculation\u003c/code\u003e, \u003ccode\u003efinancial_account_balance_does_not_support_currency\u003c/code\u003e, \u003ccode\u003efinancial_account_capability_not_enabled\u003c/code\u003e, and \u003ccode\u003efinancial_account_capability_restricted\u003c/code\u003e on \u003ccode\u003eInvoice.LastFinalizationError\u003c/code\u003e, \u003ccode\u003ePaymentIntent.LastPaymentError\u003c/code\u003e, \u003ccode\u003eSetupAttempt.SetupError\u003c/code\u003e, \u003ccode\u003eSetupIntent.LastSetupError\u003c/code\u003e, \u003ccode\u003eStripeError\u003c/code\u003e, and \u003ccode\u003eTerminal.Reader.Action.ApiError\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e15.2.1 - 2026-06-12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1825\"\u003e#1825\u003c/a\u003e Add \u0026quot;source\u0026quot; field to user-agent header\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e15.2.0 - 2026-05-27\u003c/h2\u003e\n\u003cp\u003eThis release changes the pinned API version to 2026-05-27.dahlia.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/stripe/stripe-python/pull/1816\"\u003e#1816\u003c/a\u003e Update generated code\n\u003cul\u003e\n\u003cli\u003eAdd support for new resource \u003ccode\u003ev2.commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ecreate\u003c/code\u003e and \u003ccode\u003eretrieve\u003c/code\u003e methods on resource \u003ccode\u003ev2.commerce.ProductCatalogImport\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ebizum_payments\u003c/code\u003e and \u003ccode\u003escalapay_payments\u003c/code\u003e on \u003ccode\u003eAccount.Capability\u003c/code\u003e, \u003ccode\u003eAccountCreateParamsCapability\u003c/code\u003e, and \u003ccode\u003eAccountModifyParamsCapability\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/stripe/stripe-python/commit/4454934a9bd1d957e50d6f9b4d6c11cb827348db\"\u003e\u003ccode\u003e4454934\u003c/code\u003e\u003c/a\u003e Bump version to 15.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/fa25f2471e981e7f6ba633267a0e4abc81586766\"\u003e\u003ccode\u003efa25f24\u003c/code\u003e\u003c/a\u003e Update generated code (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1836\"\u003e#1836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/4280756589793409d9431e36b69524d5b393968d\"\u003e\u003ccode\u003e4280756\u003c/code\u003e\u003c/a\u003e Add PR disclaimer to README (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1831\"\u003e#1831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/3f0f83494bb4c8db3436e5bdbe045c16cdf7bca4\"\u003e\u003ccode\u003e3f0f834\u003c/code\u003e\u003c/a\u003e Upgrade CI runner from ubuntu-22.04 to ubuntu-24.04 (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1830\"\u003e#1830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/a8fcb6913bd4abbe777a1944a126bdf5da36ec87\"\u003e\u003ccode\u003ea8fcb69\u003c/code\u003e\u003c/a\u003e Remove retired manual API tests covered by generated examples (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1829\"\u003e#1829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/1eab0455197eb5d86f858120d062c3984a429b96\"\u003e\u003ccode\u003e1eab045\u003c/code\u003e\u003c/a\u003e Bump version to 15.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/36e43ba1d8304d25eba0623367ace415224c5b30\"\u003e\u003ccode\u003e36e43ba\u003c/code\u003e\u003c/a\u003e docs: clarify private preview SDK access in README (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1826\"\u003e#1826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/a5536454ca270b0a0857c65f2cb9d0b636ce8bba\"\u003e\u003ccode\u003ea553645\u003c/code\u003e\u003c/a\u003e Add source field to user-agent header (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1825\"\u003e#1825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/42db177ce3777b27135554cd09a4d59256a84d3b\"\u003e\u003ccode\u003e42db177\u003c/code\u003e\u003c/a\u003e Add Changelog section to PR template (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1823\"\u003e#1823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stripe/stripe-python/commit/2d39c3bc3ed3bcc07c1eb5516458ce63096d9984\"\u003e\u003ccode\u003e2d39c3b\u003c/code\u003e\u003c/a\u003e Disable trim_trailing_whitespace for CHANGELOG.md (\u003ca href=\"https://redirect.github.com/stripe/stripe-python/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stripe/stripe-python/compare/v11.6.0...v15.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 3.3.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0.rc1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0.rc1\"\u003e4.0.0.rc1\u003c/a\u003e - 2025-09-07\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-keycloak` from 5.12.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marcospereirampj/python-keycloak/blob/master/CHANGELOG.md\"\u003epython-keycloak's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.1 (2026-02-15)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003euma\u003c/strong\u003e: set requested resource ids correctly in permission ticket creation (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.1.0 (2026-02-13)\u003c/h2\u003e\n\u003ch3\u003eFeat\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edecode token with all keys, added get client certificate info method (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.3 (2026-01-28)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not throw when processing signed userinfo response (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.2 (2026-01-08)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix/python version and ci (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.1 (2026-01-05)\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003epython version\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev7.0.0 (2026-01-04)\u003c/h2\u003e\n\u003ch3\u003eBREAKING CHANGE\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethis change introduces a very strong typing across the library. From now on, we demand that each method returns a single type and converts the results into the specified return type, otherwise it raises a TypeError exception. This should resolve any type checking linter errors within the library as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdated lockfile\u003c/li\u003e\n\u003cli\u003epass along the default connection manager configuration into uma\u003c/li\u003e\n\u003cli\u003edont override transport for httpx\u003c/li\u003e\n\u003cli\u003epass query params in get groups\u003c/li\u003e\n\u003cli\u003eremoved async property as a dependency\u003c/li\u003e\n\u003cli\u003estrong and consistent typing across the library\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.0 (2025-12-28)\u003c/h2\u003e\n\u003ch3\u003eBREAKING CHANGE\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echanges the behavior of get_group_by_path to raise an exception in case the path is not found, which is now the definitive new behavior\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/de25a9c1fe49ab5a658cf66f24f6b5e92d84f664\"\u003e\u003ccode\u003ede25a9c\u003c/code\u003e\u003c/a\u003e fix(uma): set requested resource ids correctly in permission ticket creation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/9720e2deff8f93cd8fe0db34295929f7d704c7ca\"\u003e\u003ccode\u003e9720e2d\u003c/code\u003e\u003c/a\u003e docs: changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/98b9b245e3ac78fc7b287b4477e334ba91c7ffb4\"\u003e\u003ccode\u003e98b9b24\u003c/code\u003e\u003c/a\u003e feat: decode token with all keys, added get client certificate info method (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/f5333a079cf5363025e027c338118fea9494394e\"\u003e\u003ccode\u003ef5333a0\u003c/code\u003e\u003c/a\u003e docs: changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/ce07157bd9ef218e9d25b140c9f6d444b0c9e7b1\"\u003e\u003ccode\u003ece07157\u003c/code\u003e\u003c/a\u003e fix: do not throw when processing signed userinfo response (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/699\"\u003e#699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/6580ac66666cf3804d735a59d51e51337083a70c\"\u003e\u003ccode\u003e6580ac6\u003c/code\u003e\u003c/a\u003e chore: updated deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/2f6beb38545bb8692eb0925a5ff37bb24a68e7e6\"\u003e\u003ccode\u003e2f6beb3\u003c/code\u003e\u003c/a\u003e chore(typehints): fixup typehints for role parameter for add composites (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/697\"\u003e#697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/7e8184dd1290ce1558037b0240ffce244fef2864\"\u003e\u003ccode\u003e7e8184d\u003c/code\u003e\u003c/a\u003e chore: typehints (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/696\"\u003e#696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/5e3ee8d5d606d5f1d548d8af6c4c1a61f86543d5\"\u003e\u003ccode\u003e5e3ee8d\u003c/code\u003e\u003c/a\u003e docs: changelog update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcospereirampj/python-keycloak/commit/8eca957e33a9c895231170137f1566bc42ec1262\"\u003e\u003ccode\u003e8eca957\u003c/code\u003e\u003c/a\u003e fix: Fix/python version and ci (\u003ca href=\"https://redirect.github.com/marcospereirampj/python-keycloak/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marcospereirampj/python-keycloak/compare/v5.12.0...v7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.48 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `resend` from 2.27.0 to 2.32.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/resendlabs/resend-python/releases\"\u003eresend's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use Contacts.Imports nested class for consistent type namespacing by \u003ca href=\"https://github.com/drish\"\u003e\u003ccode\u003e@​drish\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/223\"\u003eresend/resend-python#223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.32.1...v2.32.2\"\u003ehttps://github.com/resend/resend-python/compare/v2.32.1...v2.32.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: contact imports segments typing by \u003ca href=\"https://github.com/drish\"\u003e\u003ccode\u003e@​drish\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/222\"\u003eresend/resend-python#222\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.32.0...v2.32.1\"\u003ehttps://github.com/resend/resend-python/compare/v2.32.0...v2.32.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add contact imports endpoints by \u003ca href=\"https://github.com/drish\"\u003e\u003ccode\u003e@​drish\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/220\"\u003eresend/resend-python#220\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.31.0...v2.32.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.31.0...v2.32.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.31.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: add sync-prs-to-linear action by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/207\"\u003eresend/resend-python#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump public-shared-workflows hash by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/208\"\u003eresend/resend-python#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump public-shared-workflows hash by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/210\"\u003eresend/resend-python#210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: inbound attachment types by \u003ca href=\"https://github.com/gabrielmfern\"\u003e\u003ccode\u003e@​gabrielmfern\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/211\"\u003eresend/resend-python#211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update python docker tag to v3.14.6 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/215\"\u003eresend/resend-python#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update codecov/codecov-action action to v7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/213\"\u003eresend/resend-python#213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix installing from sdist (setup.py imports the package, pulling typing_extensions at build time) by \u003ca href=\"https://github.com/sethc555\"\u003e\u003ccode\u003e@​sethc555\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/216\"\u003eresend/resend-python#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: missing query parameter for GET on a received email by \u003ca href=\"https://github.com/gabrielmfern\"\u003e\u003ccode\u003e@​gabrielmfern\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https...\n\n_Description has been truncated_","html_url":"https://github.com/OpenHands/OpenHands/pull/15093","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHands%2FOpenHands/issues/15093","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15093/packages"}},{"old_version":"2.0.49","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-07-01T01:12:18.000Z","version_change":"2.0.49 → 2.0.51","issue":{"uuid":"4781533945","node_id":"PR_kwDOSZ_5Cs7sd3GP","number":12,"state":"open","title":"deps(backend): bump the backend-minor-and-patch group across 1 directory with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-07-01T01:12:18.000Z","updated_at":"2026-07-01T01:12:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(backend): bump","group_name":"backend-minor-and-patch","update_count":21,"packages":[{"name":"alembic","old_version":"1.18.4","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"anyio","old_version":"4.13.0","new_version":"4.14.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.6.17","repository_url":"https://github.com/certifi/python-certifi"},{"name":"click","old_version":"8.3.3","new_version":"8.4.2","repository_url":"https://github.com/pallets/click"},{"name":"fastapi","old_version":"0.136.1","new_version":"0.138.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"greenlet","old_version":"3.5.0","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.13","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"jiter","old_version":"0.14.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"openai","old_version":"2.33.0","new_version":"2.44.0","repository_url":"https://github.com/openai/openai-python"},{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.0","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pymupdf","old_version":"1.27.2.3","new_version":"1.28.0","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"pydantic-core","old_version":"2.46.3","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.0.0","new_version":"1.3.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.67.3","new_version":"4.68.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-minor-and-patch group with 21 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.18.5` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.6.17` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.4.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.138.2` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.0` | `3.5.3` |\n| [idna](https://github.com/kjd/idna) | `3.13` | `3.18` |\n| [jiter](https://github.com/pydantic/jiter) | `0.14.0` | `0.16.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [openai](https://github.com/openai/openai-python) | `2.33.0` | `2.44.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.3` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.0` | `2.14.2` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.27.2.3` | `1.28.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.3` | `2.47.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.0` | `1.3.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.3` | `4.68.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.49.0` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n\n\nUpdates `alembic` from 1.18.4 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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.13.0 to 4.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CapacityLimiter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Condition\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Event\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Lock\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.ResourceGuard\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Semaphore\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed cancellation exception escaping a cancel scope when triggered via \u003ccode\u003echeck_cancelled()\u003c/code\u003e in a worker thread (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1113\"\u003e#1113\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eTaskGroup\u003c/code\u003e raising \u003ccode\u003eAttributeError\u003c/code\u003e instead of a clear error when entered more than once (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1109\"\u003e#1109\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bahtya\"\u003e\u003ccode\u003e@​bahtya\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/149b9e907618fadf6840a4d3cebad533b0c7d033\"\u003e\u003ccode\u003e149b9e9\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/377518cd1160314f2fdf74f356ae9e848c94a065\"\u003e\u003ccode\u003e377518c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6 to 7 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b42a2f5e8e9910d0c57b970f9a747427a9da26f0\"\u003e\u003ccode\u003eb42a2f5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1185\"\u003e#1185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3ceb6ffbfa89be715f444550883356fbfbc13154\"\u003e\u003ccode\u003e3ceb6ff\u003c/code\u003e\u003c/a\u003e Allow 0 tokens in a CapacityLimiter instantiated outside an event loop (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e10d1db74f7a59cb283a1e4b3b22227da11c6f07\"\u003e\u003ccode\u003ee10d1db\u003c/code\u003e\u003c/a\u003e Add missing await to open_file() in file I/O concurrency example (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1dbc3b62256e5877bcf610aca98ba6e450d14c20\"\u003e\u003ccode\u003e1dbc3b6\u003c/code\u003e\u003c/a\u003e OutcomeException should not discard test runner_task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1180\"\u003e#1180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62\"\u003e\u003ccode\u003effe9133\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8\"\u003e\u003ccode\u003ef8b9f01\u003c/code\u003e\u003c/a\u003e Fixed asyncio lock waiter deadlocks after cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1145\"\u003e#1145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de\"\u003e\u003ccode\u003ed517ee1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49\"\u003e\u003ccode\u003e550b68e\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eanyio.run\u003c/code\u003e support \u003ccode\u003eAwaitable\u003c/code\u003e at runtime on all backends (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.4.22 to 2026.6.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/36e35680e0dc42c70cd60bfe440e92e7137f5a1c\"\u003e\u003ccode\u003e36e3568\u003c/code\u003e\u003c/a\u003e Bump dessant/lock-threads from 6.0.0 to 6.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.06.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 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/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.2/\"\u003ehttps://pypi.org/project/click/8.4.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/34\"\u003ehttps://github.com/pallets/click/milestone/34\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by \u003ca href=\"https://redirect.github.com/pallets/click/issues/3126\"\u003e#3126\u003c/a\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3502\"\u003e#3502\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3043\"\u003e#3043\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3504\"\u003e#3504\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3508\"\u003e#3508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3509\"\u003e#3509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3059\"\u003e#3059\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3507\"\u003e#3507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3242\"\u003e#3242\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2542\"\u003e#2542\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3534\"\u003e#3534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from \u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3533\"\u003e#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2331\"\u003e#2331\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1884\"\u003e#1884\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3125\"\u003e#3125\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32\"\u003ehttps://github.com/pallets/click/milestone/32\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.2\u003c/h2\u003e\n\u003cp\u003eUnreleased\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by {pr}\u003ccode\u003e3126\u003c/code\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. {issue}\u003ccode\u003e3502\u003c/code\u003e\n{issue}\u003ccode\u003e3043\u003c/code\u003e {pr}\u003ccode\u003e3504\u003c/code\u003e {pr}\u003ccode\u003e3508\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. {pr}\u003ccode\u003e3509\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n{issue}\u003ccode\u003e3059\u003c/code\u003e {pr}\u003ccode\u003e3507\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. {issue}\u003ccode\u003e3242\u003c/code\u003e {issue}\u003ccode\u003e2542\u003c/code\u003e {pr}\u003ccode\u003e3534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from {pr}\u003ccode\u003e3482\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e\n{pr}\u003ccode\u003e3533\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. {issue}\u003ccode\u003e3458\u003c/code\u003e {pr}\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. {issue}\u003ccode\u003e3277\u003c/code\u003e {pr}\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eEnum\u003c/code\u003e values used as \u003ccode\u003eChoice\u003c/code\u003e options produces a\nvalid completion result. {issue}\u003ccode\u003e3015\u003c/code\u003e {pr}\u003ccode\u003e3471\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. {issue}\u003ccode\u003e3487\u003c/code\u003e {pr}\u003ccode\u003e3493\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e {pr}\u003ccode\u003e3482\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eopen_url\u003c/code\u003e on Windows when the file path contains spaces.\n{issue}\u003ccode\u003e2994\u003c/code\u003e {pr}\u003ccode\u003e3478\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e typing improvements. {pr}\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for {class}\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n{class}\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n{class}\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\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/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53\"\u003e\u003ccode\u003eb2e30a1\u003c/code\u003e\u003c/a\u003e Release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49\"\u003e\u003ccode\u003e7a16b20\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when module differs from distribution name (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc\"\u003e\u003ccode\u003ebec5928\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when top-level module differs from distribution...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd\"\u003e\u003ccode\u003e916883a\u003c/code\u003e\u003c/a\u003e Fix tests to not rely on \u003ccode\u003e-Wdefault\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3591\"\u003e#3591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520\"\u003e\u003ccode\u003e09195f6\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02\"\u003e\u003ccode\u003e1557e26\u003c/code\u003e\u003c/a\u003e Check for warning exception with idiomatic context manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3\"\u003e\u003ccode\u003ed9ff133\u003c/code\u003e\u003c/a\u003e Static typing improvements in \u003ccode\u003eclick.shell_completion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3460\"\u003e#3460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793\"\u003e\u003ccode\u003e762c97e\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581\"\u003e\u003ccode\u003e8929d39\u003c/code\u003e\u003c/a\u003e Convert changes to markdown. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd\"\u003e\u003ccode\u003e237be50\u003c/code\u003e\u003c/a\u003e Move changes headings down a level.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.136.1 to 0.138.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: Add TestMu again. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15830\"\u003e#15830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15820\"\u003e#15820\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15799\"\u003e#15799\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/702fea83bb3ef0b558104835d7936af49650fb2d\"\u003e\u003ccode\u003e702fea8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15864\"\u003e#15864\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6466865eec63cb545869d80e2ee6fbc54c4d364e\"\u003e\u003ccode\u003e6466865\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b790e14cb686506df663959ac4879053cfed38db\"\u003e\u003ccode\u003eb790e14\u003c/code\u003e\u003c/a\u003e ♻️ Make \u003ccode\u003eapp.frontend()\u003c/code\u003e return 404 for methods other than \u003ccode\u003eGET\u003c/code\u003e or \u003ccode\u003eHEAD\u003c/code\u003e wi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c2708d981729c96437dcc1d7cfa40cd15128bc60\"\u003e\u003ccode\u003ec2708d9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/403b1fa16f9519f4b5ab52413daae059479fae4a\"\u003e\u003ccode\u003e403b1fa\u003c/code\u003e\u003c/a\u003e 🔧 Update sponsors: remove Stainless (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15862\"\u003e#15862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1929ac23195136e8616ed1b7c3fd84c65b26d234\"\u003e\u003ccode\u003e1929ac2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cba41585675ecb0e119d3ca258821659f07ec3f7\"\u003e\u003ccode\u003ecba4158\u003c/code\u003e\u003c/a\u003e ♻️ Refactor how sponsors data is handled for banners (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15852\"\u003e#15852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b90c49aefad4958abdfbcacf9c2f816940a8f0e2\"\u003e\u003ccode\u003eb90c49a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15842\"\u003e#15842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f2f3df4852bf7cb29be1187806d95a0fdc7ea40\"\u003e\u003ccode\u003e1f2f3df\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0af003a85da454dcf6b6783e0ad3f0dd687e944f\"\u003e\u003ccode\u003e0af003a\u003c/code\u003e\u003c/a\u003e ♻️ Refactor Library Skills, make info easier to find for agents (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15841\"\u003e#15841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.1...0.138.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.5.0 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.0...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.13 to 3.18\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\nas arguments or on standard input, with options to select A-label\nor U-label output and control error handling.\u003c/li\u003e\n\u003cli\u003eRaise the minimum supported Python version to 3.9\u003c/li\u003e\n\u003cli\u003eVarious code quality improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f39ea903ba49eb5a0b2c6723c9a929b41ed4a0f1\"\u003e\u003ccode\u003ef39ea90\u003c/code\u003e\u003c/a\u003e Release 3.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/40f4e407bc7452da37c24b0c112dcda9a5b299ba\"\u003e\u003ccode\u003e40f4e40\u003c/code\u003e\u003c/a\u003e Pre-release 3.18rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1a5bf80f2fa40454589e6144efe5f72015ef9d24\"\u003e\u003ccode\u003e1a5bf80\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/253\"\u003e#253\u003c/a\u003e from kjd/lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5bbb26fc86e28c4ee1434ae8ae8db76de4c2a5ac\"\u003e\u003ccode\u003e5bbb26f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into lenient-decode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c532bae5270489cef8faf9f6b1eb70cbcb454c6d\"\u003e\u003ccode\u003ec532bae\u003c/code\u003e\u003c/a\u003e Rename decode() lenient= option to display= (issue \u003ca href=\"https://redirect.github.com/kjd/idna/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0b1758ba11952a2e88fd6141ffa620409bff0580\"\u003e\u003ccode\u003e0b1758b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/252\"\u003e#252\u003c/a\u003e from kjd/release-3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f48619c4cea6859b938d560fdd9feb898e678567\"\u003e\u003ccode\u003ef48619c\u003c/code\u003e\u003c/a\u003e Release 3.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7421ba8003227f816142ab40178e3a7d204e6847\"\u003e\u003ccode\u003e7421ba8\u003c/code\u003e\u003c/a\u003e Pre-release 3.17rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/22ebb73b164081f209449b50162eb7ce086e96a4\"\u003e\u003ccode\u003e22ebb73\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/251\"\u003e#251\u003c/a\u003e from kjd/structure-optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2a7ac0a58c788d50112a5003af545a83807fb108\"\u003e\u003ccode\u003e2a7ac0a\u003c/code\u003e\u003c/a\u003e Drop redundant parallel-arrays comment from uts46data\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.13...v3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jiter` from 0.14.0 to 0.16.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/785cf750016150bda7410e95525bd6ed398102c4\"\u003e\u003ccode\u003e785cf75\u003c/code\u003e\u003c/a\u003e release: 0.16.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/259\"\u003e#259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/e192631a659bcf251402950b78c5d17a17a9d827\"\u003e\u003ccode\u003ee192631\u003c/code\u003e\u003c/a\u003e Add 'Part of the Pydantic Stack' footer to README (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/c929d0cb4c9f59f9b89d1a0585203924f7a87f3b\"\u003e\u003ccode\u003ec929d0c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eserde\u003c/code\u003e Deserializer implementation (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/6d57715e01ec78859c62fc5447073c0b5902de39\"\u003e\u003ccode\u003e6d57715\u003c/code\u003e\u003c/a\u003e Modernize Emscripten CI (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/257\"\u003e#257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/a3a02cdb056233eb89be77e6c5a11044f07b4d20\"\u003e\u003ccode\u003ea3a02cd\u003c/code\u003e\u003c/a\u003e Bump maturin to v1.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/2fe4246c71c003ddb32c943e3b432925f05f7d3c\"\u003e\u003ccode\u003e2fe4246\u003c/code\u003e\u003c/a\u003e update to PyO3 0.29 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/254\"\u003e#254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/1429532d486088de53293b57ad315a501e981e9a\"\u003e\u003ccode\u003e1429532\u003c/code\u003e\u003c/a\u003e Drop support for 3.13t target (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/255\"\u003e#255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/0bb22aa6b3a4d729e6c7bae74c05a5d0f1f654b0\"\u003e\u003ccode\u003e0bb22aa\u003c/code\u003e\u003c/a\u003e release: 0.15.0 (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/jiter/commit/0f3e5eb48a5fff16d825f9af2ea7c6748bbdfbb8\"\u003e\u003ccode\u003e0f3e5eb\u003c/code\u003e\u003c/a\u003e expose \u003ccode\u003eknown_number_bytes\u003c/code\u003e and parser methods for bytes -\u0026gt; number (\u003ca href=\"https://redirect.github.com/pydantic/jiter/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/jiter/compare/v0.14.0...v0.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.4 to 2.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.6 (May 18, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.6 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.6 is a quick release that fixes a regression discovered in the 2.4.5\nrelease.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 4 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e!EarlMilktea\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003cli\u003eWarren Weckesser\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 4 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31444\"\u003e#31444\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31453\"\u003e#31453\u003c/a\u003e: BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31459\"\u003e#31459\u003c/a\u003e: BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/31460\"\u003e#31460\u003c/a\u003e: BUG: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (May 15, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.5 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumPy 2.4.5 is a patch release that fixes bugs discovered after the 2.4.4\nrelease, has some typing improvements, and maintains infrastructure.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 17 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAleksei Nikiforov\u003c/li\u003e\n\u003cli\u003eAnarion Zuo +\u003c/li\u003e\n\u003cli\u003eAnkit Ahlawat\u003c/li\u003e\n\u003cli\u003eBreno Favaretto +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eIgor Krivenko +\u003c/li\u003e\n\u003cli\u003eIjtihed Kilani +\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMaarten Baert +\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/b832a09cf2a169c833dd2371e7c07aa00b293242\"\u003e\u003ccode\u003eb832a09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31462\"\u003e#31462\u003c/a\u003e from charris/prepare-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/57cc147d2ceacffc6534642bfbdebb3a80428e1e\"\u003e\u003ccode\u003e57cc147\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.4.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/0c72b0b53b6b83c004e434b2c7855e73c000d21e\"\u003e\u003ccode\u003e0c72b0b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31459\"\u003e#31459\u003c/a\u003e from charris/backport-31347\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9778d26e0475d381ccb7817c3b4dd8cacef2b9eb\"\u003e\u003ccode\u003e9778d26\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/e0e38767d5d0f848ab44befeedcad71e8ef589c7\"\u003e\u003ccode\u003ee0e3876\u003c/code\u003e\u003c/a\u003e BUG: core: Don't call INCREF/DECREF on descr in NpyStringAcquireAllocator. (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d1bffeb9ec4ec0bf029c94ea35abffa92d5c30f2\"\u003e\u003ccode\u003ed1bffeb\u003c/code\u003e\u003c/a\u003e BUG: \u003ccode\u003enp.linalg.svd(..., hermitian=True)\u003c/code\u003e returns non-unitary \u003ccode\u003evh\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31347\"\u003e#31347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/8d8d7e5a14a1da0bfb0faf609a7a7610c431e6e9\"\u003e\u003ccode\u003e8d8d7e5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31453\"\u003e#31453\u003c/a\u003e from seberg/issue-31452\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/bddaab7ace45f90148d8f2bb6e67daab2d45ec76\"\u003e\u003ccode\u003ebddaab7\u003c/code\u003e\u003c/a\u003e BUG: Fix regression in \u003ccode\u003earr.conj()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/37a1ecca8dff09b2c579a991194ac55b9971f3a7\"\u003e\u003ccode\u003e37a1ecc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/31444\"\u003e#31444\u003c/a\u003e from charris/begin-2.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/3c0e043217a759a8a948ade158fec14348c3b459\"\u003e\u003ccode\u003e3c0e043\u003c/code\u003e\u003c/a\u003e MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.4.4...v2.4.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.33.0 to 2.44.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.44.0\u003c/h2\u003e\n\u003ch2\u003e2.44.0 (2026-06-24)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.43.0...v2.44.0\"\u003ev2.43.0...v2.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e prioritize first auth header (\u003ca href=\"https://github.com/openai/openai-python/commit/797e3362e222ae14e587a4543b76a54d8992d66c\"\u003e797e336\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.43.0\u003c/h2\u003e\n\u003ch2\u003e2.43.0 (2026-06-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.42.0...v2.43.0\"\u003ev2.42.0...v2.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/22542358490ef8f31f0d373e17f7b791b3d983ca\"\u003e2254235\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.42.0\u003c/h2\u003e\n\u003ch2\u003e2.42.0 (2026-06-16)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.1...v2.42.0\"\u003ev2.41.1...v2.42.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin spend_alerts (\u003ca href=\"https://github.com/openai/openai-python/commit/6134198a488996c4ff6fca4551afd55fb3294fdc\"\u003e6134198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f337bf43276c880d2daf09a5d7f9fc9a886c4bf2\"\u003ef337bf4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/7015158c3119acf57af6c20903587cef928530a9\"\u003e7015158\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix release workflow permissions (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3389\"\u003e#3389\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/a526ee813f085318fe3c6923ac3fa10c1cf56420\"\u003ea526ee8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse CI environment for examples API key (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3394\"\u003e#3394\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d64d811e82aff724397e32d593e50657fee3f905\"\u003ed64d811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.1\u003c/h2\u003e\n\u003ch2\u003e2.41.1 (2026-06-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.0...v2.41.1\"\u003ev2.41.0...v2.41.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove scheduled release workflow trigger (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3366\"\u003e#3366\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/2a91011abc21032db9566b98068afefb5fbb9b24\"\u003e2a91011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.41.0\u003c/h2\u003e\n\u003ch2\u003e2.41.0 (2026-06-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.40.0...v2.41.0\"\u003ev2.40.0...v2.41.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.44.0 (2026-06-24)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.43.0...v2.44.0\"\u003ev2.43.0...v2.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e prioritize first auth header (\u003ca href=\"https://github.com/openai/openai-python/commit/797e3362e222ae14e587a4543b76a54d8992d66c\"\u003e797e336\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.43.0 (2026-06-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.42.0...v2.43.0\"\u003ev2.42.0...v2.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/22542358490ef8f31f0d373e17f7b791b3d983ca\"\u003e2254235\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.42.0 (2026-06-16)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.1...v2.42.0\"\u003ev2.41.1...v2.42.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin spend_alerts (\u003ca href=\"https://github.com/openai/openai-python/commit/6134198a488996c4ff6fca4551afd55fb3294fdc\"\u003e6134198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f337bf43276c880d2daf09a5d7f9fc9a886c4bf2\"\u003ef337bf4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update OpenAPI spec or Stainless config (\u003ca href=\"https://github.com/openai/openai-python/commit/7015158c3119acf57af6c20903587cef928530a9\"\u003e7015158\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix release workflow permissions (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3389\"\u003e#3389\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/a526ee813f085318fe3c6923ac3fa10c1cf56420\"\u003ea526ee8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse CI environment for examples API key (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3394\"\u003e#3394\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d64d811e82aff724397e32d593e50657fee3f905\"\u003ed64d811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.41.1 (2026-06-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.41.0...v2.41.1\"\u003ev2.41.0...v2.41.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBuild System\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove scheduled release workflow trigger (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3366\"\u003e#3366\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/2a91011abc21032db9566b98068afefb5fbb9b24\"\u003e2a91011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.41.0 (2026-06-03)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.40.0...v2.41.0\"\u003ev2.40.0...v2.41.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e responses.moderation and chat_completions.moderation (\u003ca href=\"https://github.com/openai/openai-python/commit/87e46c25ac9ca8cff407b52ad9fb33e326c059d6\"\u003e87e46c2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.40.0 (2026-06-01)\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/openai/openai-python/commit/6d9262d5c666a1e4d47f63178db907ba3087ac5d\"\u003e\u003ccode\u003e6d9262d\u003c/code\u003e\u003c/a\u003e release: 2.44.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/d35627525e192b7a65b556d8a79d22079ccabdf6\"\u003e\u003ccode\u003ed356275\u003c/code\u003e\u003c/a\u003e [codex] Add AWS Bedrock provider authentication (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3398\"\u003e#3398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/f47f9a270861ca6a6096e8ea15ef8f3e1fb089b0\"\u003e\u003ccode\u003ef47f9a2\u003c/code\u003e\u003c/a\u003e fix(auth): prioritize first auth header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e20b6b82c145091f0d8412a7e4a9bc5900a40462\"\u003e\u003ccode\u003ee20b6b8\u003c/code\u003e\u003c/a\u003e release: 2.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/4d354538e8c2618e228c80f1fdc332ee1f70d1f2\"\u003e\u003ccode\u003e4d35453\u003c/code\u003e\u003c/a\u003e feat(api): update OpenAPI spec or Stainless config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/2bba15e71817a75e9b8517e09cb244bc144b50d0\"\u003e\u003ccode\u003e2bba15e\u003c/code\u003e\u003c/a\u003e release: 2.42.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/1ec3e8298982d900d31b486177b5d4cecadcf035\"\u003e\u003ccode\u003e1ec3e82\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/93c2eca17d2d484b95245c849b39f51c6d291478\"\u003e\u003ccode\u003e93c2eca\u003c/code\u003e\u003c/a\u003e feat(api): manual updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/b269f88a30fcfbcceea1cc30deb00405db88c5e6\"\u003e\u003ccode\u003eb269f88\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/ee821d6b4a59d6b73850640162b6454da434f5f7\"\u003e\u003ccode\u003eee821d6\u003c/code\u003e\u003c/a\u003e feat(api): admin spend_alerts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.33.0...v2.44.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.14.0 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages gro...\n\n_Description has been truncated_","html_url":"https://github.com/khozhaniyazov/opensamga/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/khozhaniyazov%2Fopensamga/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"2.0.50","new_version":"2.0.51","update_type":"patch","path":"/backend","pr_created_at":"2026-06-29T05:12:27.000Z","version_change":"2.0.50 → 2.0.51","issue":{"uuid":"4765226723","node_id":"PR_kwDOSpidf87roNWT","number":62,"state":"closed","title":"chore(deps)(deps): bump the python-minor-and-patch group in /backend with 4 updates","user":"dependabot[bot]","labels":["dependencies","backend"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-29T23:20:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-29T05:12:27.000Z","updated_at":"2026-06-29T23:20:47.000Z","time_to_close":65298,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): bump","group_name":"python-minor-and-patch","update_count":4,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.138.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"ultralytics","old_version":"8.4.60","new_version":"8.4.82","repository_url":"https://github.com/ultralytics/ultralytics"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group in /backend with 4 updates: [fastapi](https://github.com/fastapi/fastapi), [python-multipart](https://github.com/Kludex/python-multipart), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) and [ultralytics](https://github.com/ultralytics/ultralytics).\n\nUpdates `fastapi` from 0.136.3 to 0.138.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: Add TestMu again. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15830\"\u003e#15830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15820\"\u003e#15820\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15799\"\u003e#15799\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b90c49aefad4958abdfbcacf9c2f816940a8f0e2\"\u003e\u003ccode\u003eb90c49a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15842\"\u003e#15842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f2f3df4852bf7cb29be1187806d95a0fdc7ea40\"\u003e\u003ccode\u003e1f2f3df\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0af003a85da454dcf6b6783e0ad3f0dd687e944f\"\u003e\u003ccode\u003e0af003a\u003c/code\u003e\u003c/a\u003e ♻️ Refactor Library Skills, make info easier to find for agents (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15841\"\u003e#15841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d5494c1f01796350fa082cf8a82b124e95162e9d\"\u003e\u003ccode\u003ed5494c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/82c527e714f16bf9e07202aff0fb91cada329844\"\u003e\u003ccode\u003e82c527e\u003c/code\u003e\u003c/a\u003e 👷 Simplify pull request workflow triggers (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15836\"\u003e#15836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3f28dbe6d84cdac19bdb2b41e1664981e37359ab\"\u003e\u003ccode\u003e3f28dbe\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6ea6b1f12e6d1a45c630a8fdf5d4c7c0959dad9\"\u003e\u003ccode\u003ef6ea6b1\u003c/code\u003e\u003c/a\u003e 👷 Update issue-manager to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15833\"\u003e#15833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/219ac634ab82b6321492ef97fb223b618ce13948\"\u003e\u003ccode\u003e219ac63\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fcc8e1f99431a0b381eaef03e07446e6975422b7\"\u003e\u003ccode\u003efcc8e1f\u003c/code\u003e\u003c/a\u003e ⬆️ Update issue-manager to 0.7.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15831\"\u003e#15831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/457f4c705c0287e49d7aa4ddec292db6185d16e3\"\u003e\u003ccode\u003e457f4c7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.3...0.138.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.31 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\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.50 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `ultralytics` from 8.4.60 to 8.4.82\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ultralytics/ultralytics/releases\"\u003eultralytics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.4.82 - Fix Axelera export deleting its output when run from the model directory (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24965\"\u003e#24965\u003c/a\u003e)\u003c/h2\u003e\n\u003ch2\u003e🌟 Summary\u003c/h2\u003e\n\u003cp\u003e🔧 \u003cstrong\u003ev8.4.82 is mainly a stability and usability release focused on fixing YOLO26 Axelera export issues, improving classification RAM caching, and tightening several training/data handling edge cases.\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e📊 Key Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e🚀 \u003cstrong\u003eMajor fix for YOLO26 Axelera exports\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where Axelera export could accidentally \u003cstrong\u003edelete its own output files\u003c/strong\u003e when run from the model’s directory.\u003c/li\u003e\n\u003cli\u003eThis was the key issue behind failed exports showing errors like “output model too small” even when compilation had actually succeeded.\u003c/li\u003e\n\u003cli\u003eThe fix now uses a safer temporary compile folder and adds export serialization to avoid conflicts from shared process state.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🔄 \u003cstrong\u003eAxelera export behavior restored for \u003ccode\u003eend2end=False\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA temporary restriction added in the previous change was removed.\u003c/li\u003e\n\u003cli\u003eYOLO26 Axelera exports can again work with \u003ccode\u003eend2end=False\u003c/code\u003e where supported, avoiding unnecessary breakage in existing workflows such as Ultralytics Platform jobs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧠 \u003cstrong\u003eClassification \u003ccode\u003ecache='ram'\u003c/code\u003e re-enabled with a memory-safe design\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eClassification training can now use RAM caching again without the previous memory growth problem.\u003c/li\u003e\n\u003cli\u003eImages are decoded once into a \u003cstrong\u003eshared memory buffer\u003c/strong\u003e instead of being copied separately into each worker.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🛑 \u003cstrong\u003eTraining now fails fast when all labels are empty\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf a detection dataset has no usable labels at all, training now stops immediately with a clear error instead of just warning and failing later in confusing ways.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🖼️ \u003cstrong\u003eImage format support cleanup\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded proper fallback loading for \u003ccode\u003e.heif\u003c/code\u003e images.\u003c/li\u003e\n\u003cli\u003eRemoved the invalid \u003ccode\u003e.jpeg2000\u003c/code\u003e extension from supported image format lists.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧹 \u003cstrong\u003ePython reliability improvements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed several mutable default argument definitions across metrics, TAL, augmentations, YOLOE, and SAM-related code.\u003c/li\u003e\n\u003cli\u003eThese bugs were subtle, but could cause shared state to leak across calls in long-running sessions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e📚 \u003cstrong\u003eDocs and workflow polish\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eClarified \u003ccode\u003estream=True\u003c/code\u003e behavior in predict mode.\u003c/li\u003e\n\u003cli\u003eDocumented \u003ccode\u003eMLFLOW_KEEP_RUN_ACTIVE\u003c/code\u003e for MLflow users.\u003c/li\u003e\n\u003cli\u003eUpdated citations for YOLOv7, YOLOv9, YOLOv10, and YOLO12 docs.\u003c/li\u003e\n\u003cli\u003eSimplified Slack release/CI notifications for cleaner team alerts.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🎯 Purpose \u0026amp; Impact\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e✅ \u003cstrong\u003eMore reliable Axelera exports for YOLO26\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the most important change in the release.\u003c/li\u003e\n\u003cli\u003eUsers exporting YOLO26 models for Axelera hardware should see \u003cstrong\u003efar fewer mysterious export failures\u003c/strong\u003e, especially in automated or isolated environments like the \u003cstrong\u003e\u003ca href=\"https://platform.ultralytics.com\"\u003eUltralytics Platform\u003c/a\u003e\u003c/strong\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e⚙️ \u003cstrong\u003eSafer production workflows\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe Axelera fix prevents exported models from being silently removed during cleanup.\u003c/li\u003e\n\u003cli\u003eThat means more dependable deployment pipelines and less debugging time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e💾 \u003cstrong\u003eBetter memory efficiency for classification training\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRe-enabling RAM caching can improve training speed while avoiding the old worker duplication problem.\u003c/li\u003e\n\u003cli\u003eThis is especially helpful for users training classification models on larger datasets.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e🧪 \u003cstrong\u003eEarlier and clearer failure signals\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCatching all-empty labels at the start helps users fix dataset problems right away instead of encountering vague downstream errors later.\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/ultralytics/ultralytics/commit/67c7ab162611aaaf142bcc99d901fb3d07ed5600\"\u003e\u003ccode\u003e67c7ab1\u003c/code\u003e\u003c/a\u003e Fix Axelera export deleting its output when run from the model directory (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24\"\u003e#24\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/36bf9dd2a4c28d385fbca118410a968cf37d4a52\"\u003e\u003ccode\u003e36bf9dd\u003c/code\u003e\u003c/a\u003e Simplify Slack notification messages (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24964\"\u003e#24964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/97a87838a48bb500cccbcd319dcc3112af9d8571\"\u003e\u003ccode\u003e97a8783\u003c/code\u003e\u003c/a\u003e Fix classification cache='ram' leak via shared memory tensor (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24670\"\u003e#24670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/2fbd69346dcf97ee97254e453d9deae2ef5fa1d4\"\u003e\u003ccode\u003e2fbd693\u003c/code\u003e\u003c/a\u003e Refactor comments in tests/\u003cstrong\u003einit\u003c/strong\u003e.py for clarity (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24651\"\u003e#24651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/a57698c8d31295914b7f1202c5f5fae1f3082fc7\"\u003e\u003ccode\u003ea57698c\u003c/code\u003e\u003c/a\u003e Drop phantom jpeg2000 extension and fix heif loader fallback (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24594\"\u003e#24594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/b768e8ad14a047ce8f441d6dc356e7926a480bc8\"\u003e\u003ccode\u003eb768e8a\u003c/code\u003e\u003c/a\u003e docs: clarify stream=True behavior (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24657\"\u003e#24657\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/9768b12cf13b217d3561e0f7806fbdbc370e6d2c\"\u003e\u003ccode\u003e9768b12\u003c/code\u003e\u003c/a\u003e docs: update YOLOv7, YOLOv9, YOLOv10 and YOLO12 citations (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24501\"\u003e#24501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/bd54d04b1760431ec36013b4e214c652f0cee9e4\"\u003e\u003ccode\u003ebd54d04\u003c/code\u003e\u003c/a\u003e Docs: document MLFLOW_KEEP_RUN_ACTIVE env var for MLflow integration (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24602\"\u003e#24602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/b55ab08b3783d7645811fc6f5c05e003a933f27d\"\u003e\u003ccode\u003eb55ab08\u003c/code\u003e\u003c/a\u003e Restore fail-fast when training labels are all empty (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24562\"\u003e#24562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ultralytics/ultralytics/commit/941fa7786eb94cadd53930b55ff1014a402ca7d8\"\u003e\u003ccode\u003e941fa77\u003c/code\u003e\u003c/a\u003e Fix mutable default args in augment, YOLOE, and SAM (\u003ca href=\"https://redirect.github.com/ultralytics/ultralytics/issues/24630\"\u003e#24630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ultralytics/ultralytics/compare/v8.4.60...v8.4.82\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/EuroUnionConsult/PondiFarmApp/pull/62","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EuroUnionConsult%2FPondiFarmApp/issues/62","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/62/packages"}},{"old_version":"2.0.49","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-29T04:35:10.000Z","version_change":"2.0.49 → 2.0.51","issue":{"uuid":"4765077057","node_id":"PR_kwDOSFHYbs7rnuPm","number":27,"state":"closed","title":"deps(py): bump the python-minor group across 1 directory with 44 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-06T04:33:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-29T04:35:10.000Z","updated_at":"2026-07-06T04:33:15.000Z","time_to_close":604683,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(py): bump","group_name":"python-minor","update_count":44,"packages":[{"name":"anyio","old_version":"4.13.0","new_version":"4.14.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"cachetools","old_version":"7.0.5","new_version":"7.1.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"choreographer","old_version":"1.2.1","new_version":"1.3.0","repository_url":"https://github.com/plotly/choreographer"},{"name":"click","old_version":"8.3.2","new_version":"8.4.2","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.20","new_version":"1.8.21","repository_url":"https://github.com/microsoft/debugpy"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"duckdb","old_version":"1.5.2","new_version":"1.5.4","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"flask-cors","old_version":"6.0.2","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-wtf","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/pallets-eco/flask-wtf"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"hpack","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/python-hyper/hpack"},{"name":"idna","old_version":"3.15","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"ipython","old_version":"9.12.0","new_version":"9.15.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jedi","old_version":"0.19.2","new_version":"0.20.0","repository_url":"https://github.com/davidhalter/jedi"},{"name":"joserfc","old_version":"1.6.4","new_version":"1.7.1","repository_url":"https://github.com/authlib/joserfc"},{"name":"jupyter-client","old_version":"8.8.0","new_version":"8.9.1","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"kaleido","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib-inline","old_version":"0.2.1","new_version":"0.2.2","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mcp","old_version":"1.27.0","new_version":"1.28.1","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"narwhals","old_version":"2.19.0","new_version":"2.22.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.4.4","new_version":"2.5.0","repository_url":"https://github.com/numpy/numpy"},{"name":"orjson","old_version":"3.11.8","new_version":"3.11.9","repository_url":"https://github.com/ijl/orjson"},{"name":"parso","old_version":"0.8.6","new_version":"0.8.7","repository_url":"https://github.com/davidhalter/parso"},{"name":"platformdirs","old_version":"4.9.6","new_version":"4.10.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"plotly","old_version":"6.6.0","new_version":"6.8.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pyotp","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pyauth/pyotp"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-engineio","old_version":"4.13.1","new_version":"4.13.3","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-socketio","old_version":"5.16.1","new_version":"5.16.3","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"python-telegram-bot","old_version":"22.6","new_version":"22.8","repository_url":"https://github.com/python-telegram-bot/python-telegram-bot"},{"name":"pytz","old_version":"2026.1.post1","new_version":"2026.2","repository_url":"https://github.com/stub42/pytz"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"traitlets","old_version":"5.14.3","new_version":"5.15.1","repository_url":"https://github.com/ipython/traitlets"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.3","repository_url":"https://github.com/regebro/tzlocal"},{"name":"uvicorn","old_version":"0.44.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.6.0","new_version":"0.8.1","repository_url":"https://github.com/jquast/wcwidth"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"wtforms","old_version":"3.2.1","new_version":"3.2.2","repository_url":"https://github.com/pallets-eco/wtforms"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 44 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.14.1` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.0.5` | `7.1.4` |\n| [choreographer](https://github.com/plotly/choreographer) | `1.2.1` | `1.3.0` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.4.2` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.20` | `1.8.21` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.2` | `1.5.4` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.2` | `6.0.5` |\n| [flask-wtf](https://github.com/pallets-eco/flask-wtf) | `1.2.2` | `1.3.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.3` |\n| [hpack](https://github.com/python-hyper/hpack) | `4.1.0` | `4.2.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.18` |\n| [ipython](https://github.com/ipython/ipython) | `9.12.0` | `9.15.0` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.19.2` | `0.20.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.6.4` | `1.7.1` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.8.0` | `8.9.1` |\n| [kaleido](https://github.com/plotly/kaleido) | `1.2.0` | `1.3.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.2.1` | `0.2.2` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.27.0` | `1.28.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.19.0` | `2.22.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.5.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.8` | `3.11.9` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.6` | `0.8.7` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.6` | `4.10.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.6.0` | `6.8.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.47.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n| [pyotp](https://github.com/pyauth/pyotp) | `2.9.0` | `2.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.13.1` | `4.13.3` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.16.1` | `5.16.3` |\n| [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) | `22.6` | `22.8` |\n| [pytz](https://github.com/stub42/pytz) | `2026.1.post1` | `2026.2` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.14.3` | `5.15.1` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.44.0` | `0.49.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.6.0` | `0.8.1` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [wtforms](https://github.com/pallets-eco/wtforms) | `3.2.1` | `3.2.2` |\n\n\nUpdates `anyio` from 4.13.0 to 4.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CapacityLimiter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Condition\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Event\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Lock\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.ResourceGuard\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.Semaphore\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed cancellation exception escaping a cancel scope when triggered via \u003ccode\u003echeck_cancelled()\u003c/code\u003e in a worker thread (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1113\"\u003e#1113\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eTaskGroup\u003c/code\u003e raising \u003ccode\u003eAttributeError\u003c/code\u003e instead of a clear error when entered more than once (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1109\"\u003e#1109\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bahtya\"\u003e\u003ccode\u003e@​bahtya\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/149b9e907618fadf6840a4d3cebad533b0c7d033\"\u003e\u003ccode\u003e149b9e9\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/377518cd1160314f2fdf74f356ae9e848c94a065\"\u003e\u003ccode\u003e377518c\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6 to 7 in the github-actions group (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1186\"\u003e#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b42a2f5e8e9910d0c57b970f9a747427a9da26f0\"\u003e\u003ccode\u003eb42a2f5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1185\"\u003e#1185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/3ceb6ffbfa89be715f444550883356fbfbc13154\"\u003e\u003ccode\u003e3ceb6ff\u003c/code\u003e\u003c/a\u003e Allow 0 tokens in a CapacityLimiter instantiated outside an event loop (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/e10d1db74f7a59cb283a1e4b3b22227da11c6f07\"\u003e\u003ccode\u003ee10d1db\u003c/code\u003e\u003c/a\u003e Add missing await to open_file() in file I/O concurrency example (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1dbc3b62256e5877bcf610aca98ba6e450d14c20\"\u003e\u003ccode\u003e1dbc3b6\u003c/code\u003e\u003c/a\u003e OutcomeException should not discard test runner_task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1180\"\u003e#1180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffe91331adb912c5d150f5d373f7cd28a0e96a62\"\u003e\u003ccode\u003effe9133\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8\"\u003e\u003ccode\u003ef8b9f01\u003c/code\u003e\u003c/a\u003e Fixed asyncio lock waiter deadlocks after cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1145\"\u003e#1145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d517ee1d41080073cc244d8adebf822a08b762de\"\u003e\u003ccode\u003ed517ee1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/550b68e1acaf82b1503b0e99fbc7f964cd07fe49\"\u003e\u003ccode\u003e550b68e\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eanyio.run\u003c/code\u003e support \u003ccode\u003eAwaitable\u003c/code\u003e at runtime on all backends (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apscheduler` from 3.11.2 to 3.11.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed sub-minute interval jobs stalling for the duration of a DST spring-forward gap when the scheduler was configured with a \u003ccode\u003eZoneInfo\u003c/code\u003e time zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1103\"\u003e#1103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed imported jobs missing their scheduler and job store links (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/4308ec95b94069f5dbdddb6c60fb792dfc8c40a4\"\u003e\u003ccode\u003e4308ec9\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ff68780d7f66fe0f505c3a32764005cd004996b9\"\u003e\u003ccode\u003eff68780\u003c/code\u003e\u003c/a\u003e Added a note about weekday numbers in CronTrigger.from_crontab()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/36936e904052e6bfbd03f83e17b03701b7a589fe\"\u003e\u003ccode\u003e36936e9\u003c/code\u003e\u003c/a\u003e Updated actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c0ff7e4ccfcc703db44a905b70c1d6568a6f81fa\"\u003e\u003ccode\u003ec0ff7e4\u003c/code\u003e\u003c/a\u003e Fixed Pyside6 tests failing on Python 3.9 and 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1b782c90edeac787deb3106fb3e5c775b3d6b0cd\"\u003e\u003ccode\u003e1b782c9\u003c/code\u003e\u003c/a\u003e Fixed fixture \u003ccode\u003ecoreapp\u003c/code\u003e not found\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/dc3dde4a34c021f215d120d88fe19ddc66bb8a66\"\u003e\u003ccode\u003edc3dde4\u003c/code\u003e\u003c/a\u003e Test against PySide6 on all Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/18a6f6b637e372730f6325786f97936e6eaa9f77\"\u003e\u003ccode\u003e18a6f6b\u003c/code\u003e\u003c/a\u003e Fixed imported jobs missing their scheduler and job store links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1693db4d8861bf941d299d79a586797ad0ac6467\"\u003e\u003ccode\u003e1693db4\u003c/code\u003e\u003c/a\u003e Fix interval jobs stalling across DST spring-forward with ZoneInfo (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0636bf4931fddb706b948b6781ebbd76058f1443\"\u003e\u003ccode\u003e0636bf4\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/3eb3de8115f1631dc5e2ecce7b00175d34ffbdf9\"\u003e\u003ccode\u003e3eb3de8\u003c/code\u003e\u003c/a\u003e Fixed bad use of pytest.raises()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.11.2...3.11.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 7.0.5 to 7.1.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.1.4 (2026-05-22)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor unit test improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.3 (2026-05-18)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor type stub improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.2 (2026-05-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor type stub improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor documentation improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize build environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.1 (2026-05-03)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eVarious type stub improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.0 (2026-05-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type stubs based on the work of the good people at \u003ccode\u003etypeshed \u0026lt;https://github.com/python/typeshed/tree/main/stubs/cachetools/\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate unit tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.0.6 (2026-04-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eMinor code improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate project URLs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate CI environment.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/48284d73d0a8834c9c50f8d41bb99e6f93b2dfed\"\u003e\u003ccode\u003e48284d7\u003c/code\u003e\u003c/a\u003e Release v7.1.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/55ea96b88a485fca9effae0f838186274f00897c\"\u003e\u003ccode\u003e55ea96b\u003c/code\u003e\u003c/a\u003e Update build environment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c5439fe5dc883220b59469e450dbcbf9f4c2e52d\"\u003e\u003ccode\u003ec5439fe\u003c/code\u003e\u003c/a\u003e Add threading tests for lock-only decorators.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/91828fccd629d426157a165d38563614ba06a875\"\u003e\u003ccode\u003e91828fc\u003c/code\u003e\u003c/a\u003e Run threading tests unconditionally with timeout.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/16952edb1eb2d2ced7601e12db722008e5156912\"\u003e\u003ccode\u003e16952ed\u003c/code\u003e\u003c/a\u003e Release v7.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/92dd756b93813d1ddfe70893e9c219342a52e19a\"\u003e\u003ccode\u003e92dd756\u003c/code\u003e\u003c/a\u003e Prepare v7.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/ced08f52ef792a010b8171715c7842da4e11b9ac\"\u003e\u003ccode\u003eced08f5\u003c/code\u003e\u003c/a\u003e Improve cachetools.func type stubs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/d809d7be5a222effd3663c33baaaee3802972daa\"\u003e\u003ccode\u003ed809d7b\u003c/code\u003e\u003c/a\u003e Update build environment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c84b5e5be3d33a32d33f0988b524fb86de1e44f2\"\u003e\u003ccode\u003ec84b5e5\u003c/code\u003e\u003c/a\u003e Release v7.1.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/39ad61c1db56600fe903f3c4216996c491e775bf\"\u003e\u003ccode\u003e39ad61c\u003c/code\u003e\u003c/a\u003e Prepare v7.1.2.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v7.0.5...v7.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `choreographer` from 1.2.1 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/choreographer/blob/main/CHANGELOG.md\"\u003echoreographer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.3.0] -- 2026-04-28\u003c/h2\u003e\n\u003cp\u003eRolls up the changes from the \u003ccode\u003e1.3.0rc0\u003c/code\u003e–\u003ccode\u003e1.3.0rc2\u003c/code\u003e release candidates.\u003c/p\u003e\n\u003ch2\u003e[1.3.0rc2] -- 2025-12-10\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--verify_local\u003c/code\u003e option in \u003ccode\u003echoreo_diagnose\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/288\"\u003e#288\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCheck path validity for browser with \u003ccode\u003eis_file()\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/288\"\u003e#288\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix local reporting logic in \u003ccode\u003echoreo_diagnose\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/288\"\u003e#288\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.3.0rc1] -- 2025-11-30\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLook for both the old download path and the new download path when locating chrome [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/286\"\u003e#286\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.3.0rc0] -- 2025-11-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ewith_perf\u003c/code\u003e keyword argument to \u003ccode\u003eSession.send_command\u003c/code\u003e / \u003ccode\u003eTarget.send_command\u003c/code\u003e to return timing information about browser write/read [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/271\"\u003e#271\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd a set of helper functions to await tab loading and send JavaScript [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/279\"\u003e#279\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eforce\u003c/code\u003e argument so chrome is not re-downloaded if the requested version already exists [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to a process group for more reliable termination of multi-process chrome [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/280\"\u003e#280\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate default chrome from 135.0.7011.0/1418433 to 144.0.7527.0/1544685 [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eChange chrome download path to use the XDG cache directory [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eget_chrome\u003c/code\u003e verbose output print the whole JSON response [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/277\"\u003e#277\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unused system inspection code [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/278\"\u003e#278\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a retry loop to populate targets, since newer chrome takes longer and doesn't populate targets right away [\u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/282\"\u003e#282\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/plotly/choreographer/pull/283\"\u003e#283\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/92147b1ccf024ae647f29ebf43057564011e06c9\"\u003e\u003ccode\u003e92147b1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/choreographer/issues/296\"\u003e#296\u003c/a\u003e from plotly/cam/update-changelog-v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/8851fc919bc7dfb27a48541543f1ff195c48eda3\"\u003e\u003ccode\u003e8851fc9\u003c/code\u003e\u003c/a\u003e Updates to release version v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/3128bddf909381a2b4205f0e28c0c3cb8b13498c\"\u003e\u003ccode\u003e3128bdd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/choreographer/issues/288\"\u003e#288\u003c/a\u003e from plotly/andrew/more_local_logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/a6f478e00fb81ad22db7c7c1d31028fb4ab20311\"\u003e\u003ccode\u003ea6f478e\u003c/code\u003e\u003c/a\u003e Add to changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/953e19ad5dc395a3554cfbaf25599a8a3db6d933\"\u003e\u003ccode\u003e953e19a\u003c/code\u003e\u003c/a\u003e Check browser is file whwen checking path validity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/d062e355b819b84e57060d4e48fbe2aa6f063259\"\u003e\u003ccode\u003ed062e35\u003c/code\u003e\u003c/a\u003e Change default setting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/c0c97fc64a55c773dd7484674996cf55d74249a1\"\u003e\u003ccode\u003ec0c97fc\u003c/code\u003e\u003c/a\u003e Add option to verify local with choreo_diagnose\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/7ade1922269a6999c06f2ff92b34a1770bba6d3e\"\u003e\u003ccode\u003e7ade192\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/choreographer/issues/286\"\u003e#286\u003c/a\u003e from plotly/andrew/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/edf284c8973dd9dc7f7b2f77a53481fe6f0d2671\"\u003e\u003ccode\u003eedf284c\u003c/code\u003e\u003c/a\u003e Update Roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/choreographer/commit/c1b7abce535feb79748c888ba1130b985c13eb3f\"\u003e\u003ccode\u003ec1b7abc\u003c/code\u003e\u003c/a\u003e Changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/choreographer/compare/v1.2.1...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.2 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/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.4.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.2/\"\u003ehttps://pypi.org/project/click/8.4.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/34\"\u003ehttps://github.com/pallets/click/milestone/34\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by \u003ca href=\"https://redirect.github.com/pallets/click/issues/3126\"\u003e#3126\u003c/a\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3502\"\u003e#3502\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3043\"\u003e#3043\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3504\"\u003e#3504\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3508\"\u003e#3508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3509\"\u003e#3509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3059\"\u003e#3059\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3507\"\u003e#3507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3242\"\u003e#3242\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2542\"\u003e#2542\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3534\"\u003e#3534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from \u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3533\"\u003e#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI usage symopsis for optional arguments producing double square brackets\n\u003ccode\u003e[[a|b|c]]...\u003c/code\u003e whose type already brackets their metavar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eversion_option\u003c/code\u003e resolves a \u003ccode\u003epackage_name\u003c/code\u003e that does not match an\ninstalled distribution as an import (top-level module) name via\n{func}\u003ccode\u003eimportlib.metadata.packages_distributions\u003c/code\u003e. Packages whose\ntop-level module name differs from their distribution name (\u003ccode\u003ePIL\u003c/code\u003e vs\n\u003ccode\u003ePillow\u003c/code\u003e, \u003ccode\u003ejwt\u003c/code\u003e vs \u003ccode\u003ePyJWT\u003c/code\u003e) no longer raise \u003ccode\u003eRuntimeError\u003c/code\u003e out of the\nbox. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2331\"\u003e#2331\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1884\"\u003e#1884\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3125\"\u003e#3125\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32\"\u003ehttps://github.com/pallets/click/milestone/32\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.4.2\u003c/h2\u003e\n\u003cp\u003eUnreleased\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Fish shell completion broken in \u003ccode\u003e8.4.0\u003c/code\u003e by {pr}\u003ccode\u003e3126\u003c/code\u003e. Newlines and\ntabs in option help text are now escaped, keeping the original completion\nformat while still supporting multi-line help. {issue}\u003ccode\u003e3502\u003c/code\u003e\n{issue}\u003ccode\u003e3043\u003c/code\u003e {pr}\u003ccode\u003e3504\u003c/code\u003e {pr}\u003ccode\u003e3508\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated commands and options with empty or missing help text no longer\nrender a stray leading space before the \u003ccode\u003e(DEPRECATED)\u003c/code\u003e label. {pr}\u003ccode\u003e3509\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eA {class}\u003ccode\u003eGroup\u003c/code\u003e with \u003ccode\u003einvoke_without_command=True\u003c/code\u003e marks its subcommand as\noptional in the usage help, showing \u003ccode\u003e[COMMAND]\u003c/code\u003e instead of \u003ccode\u003eCOMMAND\u003c/code\u003e.\n{issue}\u003ccode\u003e3059\u003c/code\u003e {pr}\u003ccode\u003e3507\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e flushes after each write, so passing a generator streams\noutput to the pager incrementally instead of staying hidden until the pipe\nbuffer fills. {issue}\u003ccode\u003e3242\u003c/code\u003e {issue}\u003ccode\u003e2542\u003c/code\u003e {pr}\u003ccode\u003e3534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eecho_via_pager\u003c/code\u003e and \u003ccode\u003eget_pager_file\u003c/code\u003e no longer close a borrowed stdout\nstream when no external pager runs, completing the partial\n\u003ccode\u003eI/O operation on closed file\u003c/code\u003e fix from {pr}\u003ccode\u003e3482\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e\n{pr}\u003ccode\u003e3533\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. {issue}\u003ccode\u003e3458\u003c/code\u003e {pr}\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. {issue}\u003ccode\u003e3277\u003c/code\u003e {pr}\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eEnum\u003c/code\u003e values used as \u003ccode\u003eChoice\u003c/code\u003e options produces a\nvalid completion result. {issue}\u003ccode\u003e3015\u003c/code\u003e {pr}\u003ccode\u003e3471\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. {issue}\u003ccode\u003e3487\u003c/code\u003e {pr}\u003ccode\u003e3493\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. {issue}\u003ccode\u003e3449\u003c/code\u003e {pr}\u003ccode\u003e3482\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eopen_url\u003c/code\u003e on Windows when the file path contains spaces.\n{issue}\u003ccode\u003e2994\u003c/code\u003e {pr}\u003ccode\u003e3478\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e typing improvements. {pr}\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e{class}\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for {class}\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n{class}\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e{meth}\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n{class}\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\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/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53\"\u003e\u003ccode\u003eb2e30a1\u003c/code\u003e\u003c/a\u003e Release version 8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49\"\u003e\u003ccode\u003e7a16b20\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when module differs from distribution name (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc\"\u003e\u003ccode\u003ebec5928\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003epackage_name\u003c/code\u003e resolution when top-level module differs from distribution...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd\"\u003e\u003ccode\u003e916883a\u003c/code\u003e\u003c/a\u003e Fix tests to not rely on \u003ccode\u003e-Wdefault\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3591\"\u003e#3591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520\"\u003e\u003ccode\u003e09195f6\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02\"\u003e\u003ccode\u003e1557e26\u003c/code\u003e\u003c/a\u003e Check for warning exception with idiomatic context manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3\"\u003e\u003ccode\u003ed9ff133\u003c/code\u003e\u003c/a\u003e Static typing improvements in \u003ccode\u003eclick.shell_completion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3460\"\u003e#3460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793\"\u003e\u003ccode\u003e762c97e\u003c/code\u003e\u003c/a\u003e Fix double-bracketing of choices in synopsis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581\"\u003e\u003ccode\u003e8929d39\u003c/code\u003e\u003c/a\u003e Convert changes to markdown. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd\"\u003e\u003ccode\u003e237be50\u003c/code\u003e\u003c/a\u003e Move changes headings down a level.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.20 to 1.8.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.21\u003c/h2\u003e\n\u003cp\u003eFixes for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReturn evaluate result in DAP response body instead of writing to stdout: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent invalid \u003ccode\u003escopes\u003c/code\u003e request from crashing debug session: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2026\"\u003e#2026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip uninitialized \u003ccode\u003e__slots__\u003c/code\u003e in variable resolver: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2024\"\u003e#2024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e-c\u003c/code\u003e arguments that are \u003ccode\u003ebytes\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix evaluation of variables from chained exception frames: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2018\"\u003e#2018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eContinueRequest\u003c/code\u003e with a specific \u003ccode\u003ethreadId\u003c/code\u003e no longer resumes all threads (in-process adapter): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2012\"\u003e#2012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid strong reference to exceptions during unwind: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2008\"\u003e#2008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow error message on evaluate failures in the hover context: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2006\"\u003e#2006\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisplay \u003ccode\u003edlerror\u003c/code\u003e output when \u003ccode\u003edlopen\u003c/code\u003e fails: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2000\"\u003e#2000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace removed \u003ccode\u003epkgutil.get_loader\u003c/code\u003e with \u003ccode\u003eimportlib.util.find_spec\u003c/code\u003e in \u003ccode\u003eget_fullname\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1998\"\u003e#1998\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEnhancements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to ignore all system exit codes: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2017\"\u003e#2017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePull changes from pydevd up to March 2026: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2010\"\u003e#2010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure work:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress Flawfinder false positives on Cython memcpy / read-loop iterators (TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816219\"\u003e#2816219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2028\"\u003e#2028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2029\"\u003e#2029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2030\"\u003e#2030\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2031\"\u003e#2031\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/maxbachmann\"\u003e\u003ccode\u003e@​maxbachmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/mfussenegger\"\u003e\u003ccode\u003e@​mfussenegger\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/sambrightman\"\u003e\u003ccode\u003e@​sambrightman\u003c/code\u003e\u003c/a\u003e for the commits.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/858b05c08555cfc54efa7cf90e70184c7495b38e\"\u003e\u003ccode\u003e858b05c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e: suppress Flawfinder false positive on Cython JoinPyUnicode ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/f0c34f133ad3eb7992ca50e45e5459f9d58f4be8\"\u003e\u003ccode\u003ef0c34f1\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e: suppress Flawfinder false positive on Cython DIGIT_PAIRS_8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/4c70e13d0e3fc8eee5013cd2a41c7a6d752d55d3\"\u003e\u003ccode\u003e4c70e13\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/19c2b8c029975a6ba2e4e521d8fbdf5f1b3ed8fd\"\u003e\u003ccode\u003e19c2b8c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ab9263839637357f3372ffb550395ffbf8ce9f77\"\u003e\u003ccode\u003eab92638\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2031\"\u003e#2031\u003c/a\u003e from StellaHuang95/stellahuang/tsa-2816219-flawfinde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/12bd4fef7ea5c35248d9f175f5b0218b970fa64c\"\u003e\u003ccode\u003e12bd4fe\u003c/code\u003e\u003c/a\u003e Return evaluate result in DAP response body instead of writing to stdout (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2027\"\u003e#2027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/8bd57a7d446d6ec4d7dd4e580d00cdea193ddcd9\"\u003e\u003ccode\u003e8bd57a7\u003c/code\u003e\u003c/a\u003e Prevent invalid scopes request from crashing debug session (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2026\"\u003e#2026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/bf118c8d0ec97e584d2f3cfd781f04a745a1334c\"\u003e\u003ccode\u003ebf118c8\u003c/code\u003e\u003c/a\u003e Skip uninitialized \u003cstrong\u003eslots\u003c/strong\u003e in variable resolver (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/a55be0e6f0700646e0833097ab78b2e4ba68745b\"\u003e\u003ccode\u003ea55be0e\u003c/code\u003e\u003c/a\u003e Potential fix when \u003ccode\u003e-c\u003c/code\u003e arguments are bytes instead of a str (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/0f037adec6fb2f61ad225849e953188ec349adbc\"\u003e\u003ccode\u003e0f037ad\u003c/code\u003e\u003c/a\u003e Fix evaluation of variables from chained exception frames (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2018\"\u003e#2018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.20...v1.8.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `decorator` from 5.2.1 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/micheles/decorator/blob/master/CHANGES.md\"\u003edecorator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2026-05-18)\u003c/h2\u003e\n\u003cp\u003eAdded license SPDX identifier to pyproject.toml (reported by\nChristian Lackas).\u003c/p\u003e\n\u003ch2\u003e5.3.0 (2026-05-17)\u003c/h2\u003e\n\u003cp\u003eAdded official support for Python 3.14 (thanks to Hugo van Kemenade,\nDavid Cain and the GitHub user bersbersbers).\nFixed a bug with \u0026quot;return await\u0026quot; contributed by Kadir Can Ozden.\nMoved decorator.py to a package structure (\u003ccode\u003edecorator/__init__.py\u003c/code\u003e) and\nadded a stub file (\u003ccode\u003edecorator/__init__.pyi\u003c/code\u003e) contributed by Marco Gorelli.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/426e9e35d563ffe356e54bd0f970d153b8f25370\"\u003e\u003ccode\u003e426e9e3\u003c/code\u003e\u003c/a\u003e Bumped the version to 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/062ff0e0c33733f2148a5590d118a8570df846d5\"\u003e\u003ccode\u003e062ff0e\u003c/code\u003e\u003c/a\u003e Fixed the dependency on setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/086ff5d95d4dc550117c12647a4427d70bf8833d\"\u003e\u003ccode\u003e086ff5d\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/5807a83ead31f0de5303fa950ddea49d850d7355\"\u003e\u003ccode\u003e5807a83\u003c/code\u003e\u003c/a\u003e Updated license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/093aced11439251e496b47a9a9369501075e8d1a\"\u003e\u003ccode\u003e093aced\u003c/code\u003e\u003c/a\u003e Updated changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/e9ced7e63ad9502b3e2a3e3db5f5f1ccc16c5fd6\"\u003e\u003ccode\u003ee9ced7e\u003c/code\u003e\u003c/a\u003e Added license SPDX\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/b3e82ddc04e8d0c18c51eecb30b4a59aee5aac1d\"\u003e\u003ccode\u003eb3e82dd\u003c/code\u003e\u003c/a\u003e Fixed CHANGES.md [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/f1ce8da8522193421436c368849afe886666b4e5\"\u003e\u003ccode\u003ef1ce8da\u003c/code\u003e\u003c/a\u003e Doc fix [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/c924d7c6aa2e47a0627706c385101ff8d558d091\"\u003e\u003ccode\u003ec924d7c\u003c/code\u003e\u003c/a\u003e Updated supported versions [ci skip]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micheles/decorator/commit/8b83e8cca35f5c773654ce4ae89b4e3f84f430d3\"\u003e\u003ccode\u003e8b83e8c\u003c/code\u003e\u003c/a\u003e Fixed CHANGES [ci skip]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/micheles/decorator/compare/5.2.1...5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.2 to 1.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.4 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.4\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake rel-\u0026gt;query work with a read only connection by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/471\"\u003educkdb/duckdb-python#471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore Polars dynamic predicates by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/482\"\u003educkdb/duckdb-python#482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept pathlib.Path, os.PathLike, bytes, and file-like objects in read_parquet/from_parquet by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/489\"\u003educkdb/duckdb-python#489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnify arrow exports across all query result types by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/495\"\u003educkdb/duckdb-python#495\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.5.3 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee the DuckDB core release notes here: \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.3\"\u003ehttps://github.com/duckdb/duckdb/releases/tag/v1.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExport all symbols by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/445\"\u003educkdb/duckdb-python#445\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix concjunction OR by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/465\"\u003educkdb/duckdb-python#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse recursive mutex to deal with GIL \u0026lt;-\u0026gt; internal lock deadlocks by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/462\"\u003educkdb/duckdb-python#462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow self-joining of Polars lazyframes by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/466\"\u003educkdb/duckdb-python#466\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.2...v1.5.3\"\u003ehttps://github.com/duckdb/duckdb-python/compare/v1.5.2...v1.5.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/305369d48d2b7e3460c36f00842200b560d6447d\"\u003e\u003ccode\u003e305369d\u003c/code\u003e\u003c/a\u003e Pin duckdb at release hash 08e34c447b\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6ac2daa21313aa8805a99de4e0f7e8748f781bf6\"\u003e\u003ccode\u003e6ac2daa\u003c/code\u003e\u003c/a\u003e Unify arrow exports across all query result types (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/495\"\u003e#495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/321197761923c6a104cc88a099f45d15adf534f2\"\u003e\u003ccode\u003e3211977\u003c/code\u003e\u003c/a\u003e force windows 2022 runners\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c8c35ebd79889a7a23d8e46deaf35272b9eb17ac\"\u003e\u003ccode\u003ec8c35eb\u003c/code\u003e\u003c/a\u003e Get the arrow schema in a separate transaction for materialized data only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/7ddc75fe0d329782650950a9392771b52e07f8e5\"\u003e\u003ccode\u003e7ddc75f\u003c/code\u003e\u003c/a\u003e run schema fetching in same transaction as arrow data conversion and only once\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5fd7f6953c9dda38d294862e5e297592a74fa289\"\u003e\u003ccode\u003e5fd7f69\u003c/code\u003e\u003c/a\u003e strip comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/426f6ccec4ad43c9f4aa74998302f2c85e2d8b18\"\u003e\u003ccode\u003e426f6cc\u003c/code\u003e\u003c/a\u003e Pull materialized CDCs through the engine again for arrow conversion with a l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/b93667893172ad42a364c286497b1feb6c7fff83\"\u003e\u003ccode\u003eb936678\u003c/code\u003e\u003c/a\u003e Accept pathlib.Path, os.PathLike, bytes, and file-like objects in read_parque...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/b41a92cd4d9ffa011ba8cb37b965fb4f792ab5ee\"\u003e\u003ccode\u003eb41a92c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/1e41c88453ebc74a85d1230b4431e3c01842f5a6\"\u003e\u003ccode\u003e1e41c88\u003c/code\u003e\u003c/a\u003e accept pathlib.Path, os.PathLike, bytes, and file-like objects in read_parque...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.2...v1.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-cors` from 6.0.2 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/corydolphin/flask-cors/releases\"\u003eflask-cors's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.5\u003c/h2\u003e\n\u003cp\u003eSupersedes 6.0.4\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd MyPy Typing and modernize options parsing by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/409\"\u003ecorydolphin/flask-cors#409\u003c/a\u003e (this broke strict type checking when using Blueprints)\u003c/li\u003e\n\u003cli\u003eRestore Blueprint support in CORS type signatures (\u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/issues/410\"\u003e#410\u003c/a\u003e) by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/411\"\u003ecorydolphin/flask-cors#411\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.5\"\u003ehttps://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd MyPy Typing  by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/409\"\u003ecorydolphin/flask-cors#409\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.4\"\u003ehttps://github.com/corydolphin/flask-cors/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDerive package version from git tag via setuptools-scm by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/405\"\u003ecorydolphin/flask-cors#405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CI/CD security with least privilege and build separation by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/406\"\u003ecorydolphin/flask-cors#406\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.3\"\u003ehttps://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.3-pre\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDerive package version from git tag via setuptools-scm by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/405\"\u003ecorydolphin/flask-cors#405\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CI/CD security with least privilege and build separation by \u003ca href=\"https://github.com/corydolphin\"\u003e\u003ccode\u003e@​corydolphin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/pull/406\"\u003ecorydolphin/flask-cors#406\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.3\"\u003ehttps://github.com/corydolphin/flask-cors/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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/91ebc49c25aaf76b0e53e925feef1e3f19617c87\"\u003e\u003ccode\u003e91ebc49\u003c/code\u003e\u003c/a\u003e Typing Hotfix: support blueprints in the type system\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/d601665840bdf128912573c9b02e1b55062625a1\"\u003e\u003ccode\u003ed601665\u003c/code\u003e\u003c/a\u003e Add strict MyPy Typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/c8e8871076c7ed378eb0ae773a2079b6d62ed7a9\"\u003e\u003ccode\u003ec8e8871\u003c/code\u003e\u003c/a\u003e Harden release publishing workflow (\u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/issues/406\"\u003e#406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/corydolphin/flask-cors/commit/e1d4034e2b2d5232f6fed27bc753f90331747b64\"\u003e\u003ccode\u003ee1d4034\u003c/code\u003e\u003c/a\u003e Derive package version from git tag via setuptools-scm (\u003ca href=\"https://redirect.github.com/corydolphin/flask-cors/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/corydolphin/flask-cors/compare/6.0.2...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-wtf` from 1.2.2 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/flask-wtf/releases\"\u003eflask-wtf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003epre-commit autoupdate by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/607\"\u003epallets-eco/flask-wtf#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eremove slsa provenance by \u003ca href=\"https://github.com/davidism\"\u003e\u003ccode\u003e@​davidism\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/638\"\u003epallets-eco/flask-wtf#638\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14 by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/648\"\u003epallets-eco/flask-wtf#648\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTry not to read uploaded files into memory by \u003ca href=\"https://github.com/Zverik\"\u003e\u003ccode\u003e@​Zverik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/635\"\u003epallets-eco/flask-wtf#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate the project to uv by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/649\"\u003epallets-eco/flask-wtf#649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReCaptcha field testing mode documentation by \u003ca href=\"https://github.com/OmeirP\"\u003e\u003ccode\u003e@​OmeirP\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/650\"\u003epallets-eco/flask-wtf#650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow nonce in reCaptcha by \u003ca href=\"https://github.com/kesara\"\u003e\u003ccode\u003e@​kesara\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/312\"\u003epallets-eco/flask-wtf#312\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCSRF meta tag helper by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/674\"\u003epallets-eco/flask-wtf#674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ewidget support the kwargs to add custom html attributes by \u003ca href=\"https://github.com/thivolle-cazat-cedric\"\u003e\u003ccode\u003e@​thivolle-cazat-cedric\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/353\"\u003epallets-eco/flask-wtf#353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect exempts in CSRFProtect.protect() by \u003ca href=\"https://github.com/rauchy\"\u003e\u003ccode\u003e@​rauchy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/419\"\u003epallets-eco/flask-wtf#419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding RECAPTCHA_ENABLE to disable recaptcha by \u003ca href=\"https://github.com/rnt\"\u003e\u003ccode\u003e@​rnt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/509\"\u003epallets-eco/flask-wtf#509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CSRF Documentation by \u003ca href=\"https://github.com/israel-oye\"\u003e\u003ccode\u003e@​israel-oye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/584\"\u003epallets-eco/flask-wtf#584\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/Zverik\"\u003e\u003ccode\u003e@​Zverik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/635\"\u003epallets-eco/flask-wtf#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/OmeirP\"\u003e\u003ccode\u003e@​OmeirP\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/650\"\u003epallets-eco/flask-wtf#650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kesara\"\u003e\u003ccode\u003e@​kesara\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/312\"\u003epallets-eco/flask-wtf#312\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thivolle-cazat-cedric\"\u003e\u003ccode\u003e@​thivolle-cazat-cedric\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/353\"\u003epallets-eco/flask-wtf#353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rauchy\"\u003e\u003ccode\u003e@​rauchy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/419\"\u003epallets-eco/flask-wtf#419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnt\"\u003e\u003ccode\u003e@​rnt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/509\"\u003epallets-eco/flask-wtf#509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/israel-oye\"\u003e\u003ccode\u003e@​israel-oye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/pull/584\"\u003epallets-eco/flask-wtf#584\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pallets-eco/flask-wtf/compare/v1.2.2...v1.3.0\"\u003ehttps://github.com/pallets-eco/flask-wtf/compare/v1.2.2...v1.3.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/pallets-eco/flask-wtf/blob/main/docs/changes.rst\"\u003eflask-wtf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-23\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't read the whole uploaded files to know their size. :pr:\u003ccode\u003e635\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStop support for Python 3.9. Start support for Python 3.14. :pr:\u003ccode\u003e648\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMigrate the project to uv. :pr:\u003ccode\u003e649\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAllow setting a \u003ccode\u003enonce\u003c/code\u003e on :class:\u003ccode\u003e~flask_wtf.recaptcha.RecaptchaField\u003c/code\u003e\n(string or zero-argument callable) for nonce-based Content Security\nPolicies. :pr:\u003ccode\u003e312\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecsrf_meta_tag()\u003c/code\u003e helper and \u003ccode\u003eWTF_CSRF_META_NAME\u003c/code\u003e setting to render\nthe CSRF token as an HTML \u003ccode\u003e\u0026lt;meta\u0026gt;\u003c/code\u003e tag.\u003c/li\u003e\n\u003cli\u003eForward keyword arguments passed to the reCAPTCHA widget as HTML attributes\non the captcha \u003ccode\u003e\u0026lt;div\u0026gt;\u003c/code\u003e, with the field id used as a default \u003ccode\u003eid\u003c/code\u003e.\n:pr:\u003ccode\u003e353\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eapply_exemptions\u003c/code\u003e parameter to\n:meth:\u003ccode\u003e~flask_wtf.csrf.CSRFProtect.protect\u003c/code\u003e so \u003ccode\u003e@csrf.exempt\u003c/code\u003e keeps working\nwhen validation is triggered manually. :pr:\u003ccode\u003e419\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRECAPTCHA_ENABLED\u003c/code\u003e setting. :pr:\u003ccode\u003e509\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/63eb4d3bd55735fc136bdc6f23a90ca2b220b602\"\u003e\u003ccode\u003e63eb4d3\u003c/code\u003e\u003c/a\u003e chore: bump to v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/192ece3da0d98682c13e12574d7b1fc938bdd8e8\"\u003e\u003ccode\u003e192ece3\u003c/code\u003e\u003c/a\u003e Improve CSRF Documentation (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/1f8522d4a362ee66ab12a1ebf55379501dfcef0d\"\u003e\u003ccode\u003e1f8522d\u003c/code\u003e\u003c/a\u003e Adding RECAPTCHA_ENABLE to disable recaptcha (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/64b9215be16dc123f7eb187494dbba6bd0e5c2cd\"\u003e\u003ccode\u003e64b9215\u003c/code\u003e\u003c/a\u003e Respect exempts in CSRFProtect.protect() (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/adf674f80c5c5e55c050729e3ec086b4d6cb0f26\"\u003e\u003ccode\u003eadf674f\u003c/code\u003e\u003c/a\u003e widget support the kwargs to add custom html attributes (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/353\"\u003e#353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/ea1f797112f857c783dcd2c6e3954357df8e1bb7\"\u003e\u003ccode\u003eea1f797\u003c/code\u003e\u003c/a\u003e feat: CSRF meta tag helper (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/674\"\u003e#674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/412e3efda3703b141ca75afbcbf0538a7797b713\"\u003e\u003ccode\u003e412e3ef\u003c/code\u003e\u003c/a\u003e Allow nonce in reCaptcha (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/312\"\u003e#312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/a7b764a1fa8f4ea960d81104c364a2d29429e1b8\"\u003e\u003ccode\u003ea7b764a\u003c/code\u003e\u003c/a\u003e ReCaptcha field testing mode documentation (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/650\"\u003e#650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/c053c0ec11560e68e558636962bbec1115a7ae2a\"\u003e\u003ccode\u003ec053c0e\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.1 to 9.0.3 (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/673\"\u003e#673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/flask-wtf/commit/ca2216cdf72717aa3c2355ba5f454080c78d9273\"\u003e\u003ccode\u003eca2216c\u003c/code\u003e\u003c/a\u003e chore(deps): bump uv from 0.9.11 to 0.11.6 (\u003ca href=\"https://redirect.github.com/pallets-eco/flask-wtf/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/flask-wtf/compare/v1.2.2...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.3.2 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0 (2026-04-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove the \u003ccode\u003eatexit\u003c/code\u003e callback. This callback caused greenlet APIs\nto become unavailable far too soon during interpreter shutdown. Now\nthey remain available while all \u003ccode\u003eatexit\u003c/code\u003e callbacks run. Sometime\nafter \u003ccode\u003ePy_IsFinalizing\u003c/code\u003e becomes true, they may begin misbehaving.\nBecause the order in which C extensions are finalized is undefined,\nC extensions that are sensitive to this need to check the results of\nthat function before invoking greenlet APIs. As a convenience,\n\u003ccode\u003ePyGreenlet_GetCurrent\u003c/code\u003e sets an exception and returns \u003ccode\u003eNULL\u003c/code\u003e\nwhen this happens (and \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e begins returning\n\u003ccode\u003eNone\u003c/code\u003e); other greenlet C API functions have undefined behaviour.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.3.2...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hpack` from 4.1.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-hyper/hpack/blob/master/CHANGELOG.rst\"\u003ehpack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.0 (2026-06-22)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAPI Changes (Backward Incompatible)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.9 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for PyPy 3.9 has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eAPI Changes (Backward Compatible)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 has been added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHeaders marked as \u003ccode\u003esensitive\u003c/code\u003e will no longer log their value at DEBUG level. Instead a placeholder value of \u003ccode\u003eSENSITIVE_REDACTED\u003c/code\u003e is logged.\u003c/li\u003e\n\u003cli\u003eFixed perfect match missed for headers with empty values.\u003c/li\u003e\n\u003cli\u003eRestricted variable integer decoding to uint32 to prevent run-away computation. With thanks to \u003ccode\u003eHiroki Nishino\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _Hiroki Nishino: \u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/billionairestechnologies/BTALGO/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/billionairestechnologies%2FBTALGO/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"2.0.49","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-29T01:18:59.000Z","version_change":"2.0.49 → 2.0.51","issue":{"uuid":"4764312048","node_id":"PR_kwDOShYNp87rlSXQ","number":16,"state":"open","title":"chore(deps): bump the python-minor-patch group across 1 directory with 15 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-29T01:18:59.000Z","updated_at":"2026-06-29T01:19:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":15,"packages":[{"name":"fastapi","old_version":"0.115.14","new_version":"0.138.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.32.1","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic-settings","old_version":"2.14.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-multipart","old_version":"0.0.20","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.18.4","new_version":"1.18.5","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"greenlet","old_version":"3.5.0","new_version":"3.5.3","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"pyjwt","old_version":"2.12.1","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"numpy","old_version":"2.4.5","new_version":"2.5.0","repository_url":"https://github.com/numpy/numpy"},{"name":"prometheus-client","old_version":"0.21.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"typer","old_version":"0.15.3","new_version":"0.26.8","repository_url":"https://github.com/fastapi/typer"},{"name":"ruff","old_version":"0.8.6","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pip-audit","old_version":"2.10.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.14` | `0.138.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.32.1` | `0.49.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.1` | `2.14.2` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.20` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.18.5` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.0` | `3.5.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.1` | `2.13.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.5` | `2.5.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.1` | `0.25.0` |\n| [typer](https://github.com/fastapi/typer) | `0.15.3` | `0.26.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.8.6` | `0.15.20` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.10.0` | `2.10.1` |\n\n\nUpdates `fastapi` from 0.115.14 to 0.138.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.1\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor Library Skills, make info easier to find for agents. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15841\"\u003e#15841\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15836\"\u003e#15836\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Update issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15833\"\u003e#15833\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆️ Update issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15831\"\u003e#15831\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: Add TestMu again. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15830\"\u003e#15830\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Update zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15820\"\u003e#15820\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15799\"\u003e#15799\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b90c49aefad4958abdfbcacf9c2f816940a8f0e2\"\u003e\u003ccode\u003eb90c49a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15842\"\u003e#15842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f2f3df4852bf7cb29be1187806d95a0fdc7ea40\"\u003e\u003ccode\u003e1f2f3df\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0af003a85da454dcf6b6783e0ad3f0dd687e944f\"\u003e\u003ccode\u003e0af003a\u003c/code\u003e\u003c/a\u003e ♻️ Refactor Library Skills, make info easier to find for agents (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15841\"\u003e#15841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d5494c1f01796350fa082cf8a82b124e95162e9d\"\u003e\u003ccode\u003ed5494c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/82c527e714f16bf9e07202aff0fb91cada329844\"\u003e\u003ccode\u003e82c527e\u003c/code\u003e\u003c/a\u003e 👷 Simplify pull request workflow triggers (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15836\"\u003e#15836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3f28dbe6d84cdac19bdb2b41e1664981e37359ab\"\u003e\u003ccode\u003e3f28dbe\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6ea6b1f12e6d1a45c630a8fdf5d4c7c0959dad9\"\u003e\u003ccode\u003ef6ea6b1\u003c/code\u003e\u003c/a\u003e 👷 Update issue-manager to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15833\"\u003e#15833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/219ac634ab82b6321492ef97fb223b618ce13948\"\u003e\u003ccode\u003e219ac63\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fcc8e1f99431a0b381eaef03e07446e6975422b7\"\u003e\u003ccode\u003efcc8e1f\u003c/code\u003e\u003c/a\u003e ⬆️ Update issue-manager to 0.7.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15831\"\u003e#15831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/457f4c705c0287e49d7aa4ddec292db6185d16e3\"\u003e\u003ccode\u003e457f4c7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.14...0.138.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.32.1 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\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/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.32.1...0.49.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.14.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.20 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.31\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003eKludex/python-multipart#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003eKludex/python-multipart#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate Content-Length is non-negative in parse_form by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003eKludex/python-multipart#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.30\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTreat only \u003ccode\u003e\u0026amp;\u003c/code\u003e as the urlencoded field separator by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003eKludex/python-multipart#290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231 extended parameters in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003eKludex/python-multipart#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.29\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/manunio\"\u003e\u003ccode\u003e@​manunio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003eKludex/python-multipart#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePass parse offsets via constructors by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003eKludex/python-multipart#268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multipart header limits by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003eKludex/python-multipart#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSkip preamble before first multipart boundary by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/262\"\u003eKludex/python-multipart#262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilently discard epilogue data after the closing boundary by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/259\"\u003eKludex/python-multipart#259\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/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.31 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003e#296\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eContent-Length\u003c/code\u003e is non-negative in \u003ccode\u003eparse_form\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003e#297\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30 (2026-05-31)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParse \u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e bodies per the WHATWG URL standard, treating only \u003ccode\u003e\u0026amp;\u003c/code\u003e as a field separator \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003e#290\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231/5987 extended parameters (\u003ccode\u003ename*\u003c/code\u003e, \u003ccode\u003efilename*\u003c/code\u003e) in \u003ccode\u003eparse_options_header\u003c/code\u003e, keeping the plain parameter authoritative per \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7578#section-4.2\"\u003eRFC 7578 §4.2\u003c/a\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003e#291\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29 (2026-05-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003e#270\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.27 (2026-04-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multipart header limits \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003e#267\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePass parse offsets via constructors \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003e#268\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.26 (2026-04-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSkip preamble before the first multipart boundary more efficiently \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/262\"\u003e#262\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSilently discard epilogue data after the closing multipart boundary \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/259\"\u003e#259\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.25 (2026-04-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd MIME content type info to \u003ccode\u003eFile\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/143\"\u003e#143\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eHandle CTE values case-insensitively \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/258\"\u003e#258\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRemove custom \u003ccode\u003eFormParser\u003c/code\u003e classes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/257\"\u003e#257\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eUPLOAD_DELETE_TMP\u003c/code\u003e to \u003ccode\u003eFormParser\u003c/code\u003e config \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/254\"\u003e#254\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003efield_end\u003c/code\u003e for trailing bare field names on finalize \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/230\"\u003e#230\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eHandle multipart headers case-insensitively \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/252\"\u003e#252\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eApply Apache-2.0 properly \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/247\"\u003e#247\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.24 (2026-04-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eValidate \u003ccode\u003echunk_size\u003c/code\u003e in \u003ccode\u003eparse_form()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/244\"\u003e#244\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.23 (2026-04-05)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/4cffc68a165f7a6f6b7756ce006fabf07a05b7a4\"\u003e\u003ccode\u003e4cffc68\u003c/code\u003e\u003c/a\u003e Version 0.0.31 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/c814948acf509cef7881fa75c969969b19239bbf\"\u003e\u003ccode\u003ec814948\u003c/code\u003e\u003c/a\u003e Reject negative \u003ccode\u003eContent-Length\u003c/code\u003e in \u003ccode\u003eparse_form\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6b837d47bc68826ed5cbbcb50c6c6a6093444494\"\u003e\u003ccode\u003e6b837d4\u003c/code\u003e\u003c/a\u003e Bound header field name size before validating (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/e0c4f9df2e737d1663fbbdd6563f80613a2089f9\"\u003e\u003ccode\u003ee0c4f9d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b8a01bb683e8e8675fdb5d831b206a478c8215aa\"\u003e\u003ccode\u003eb8a01bb\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6732164f30c58e28589a1e22213d2f6b8c6bad9f\"\u003e\u003ccode\u003e6732164\u003c/code\u003e\u003c/a\u003e Speed up multipart header parsing and callback dispatch (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.32\"\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.49 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `alembic` from 1.18.4 to 1.18.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.18.5\u003c/h1\u003e\n\u003cp\u003eReleased: June 25, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003e--splice\u003c/code\u003e support to the \u003ccode\u003emerge()\u003c/code\u003e command. Previously, the\nmerge command would suggest using \u003ccode\u003e--splice\u003c/code\u003e when attempting to merge\nnon-head revisions, but the flag was not actually accepted by the command.\nThe \u003ccode\u003esplice\u003c/code\u003e parameter is now available in both the command-line\ninterface and the \u003ccode\u003ecommand.merge()\u003c/code\u003e function, matching the existing\nsupport in \u003ccode\u003ecommand.revision()\u003c/code\u003e.  Pull request courtesy Kadir Can\nOzden.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1712\"\u003e#1712\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [environment]\u003c/strong\u003e Added \u003ccode\u003eScriptDirectory.get_heads.consider_depends_on\u003c/code\u003e\nparameter to \u003ccode\u003eScriptDirectory.get_heads()\u003c/code\u003e. When set to \u003ccode\u003eTrue\u003c/code\u003e,\nhead revisions that are also a dependency of another revision via\n\u003ccode\u003edepends_on\u003c/code\u003e are excluded from the result, matching the effective\nheads that would be present in the \u003ccode\u003ealembic_version\u003c/code\u003e table after\nrunning all upgrades.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1806\"\u003e#1806\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed rendering of dialect keyword arguments containing\n\u003ccode\u003e~sqlalchemy.schema.Column\u003c/code\u003e objects within sequences, such as\n\u003ccode\u003epostgresql_include\u003c/code\u003e.  These were previously rendered using \u003ccode\u003erepr()\u003c/code\u003e,\nproducing invalid Python in the generated migration scripts.  Column\nobjects within list or tuple values are now correctly rendered as their\nstring column names.  Pull request courtesy Ajay Singh.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1258\"\u003e#1258\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Implemented type comparison for \u003ccode\u003eENUM\u003c/code\u003e datatypes on MySQL, which\nchecks that the individual enum values are equivalent.  If additional\nentries are on either side, this generates a diff.  Changes of order do not\ngenerate a diff.  Pull request courtesy Furkan Köykıran.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1745\"\u003e#1745\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/779\"\u003e#779\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Fixed bug where the \u003ccode\u003einline_references\u003c/code\u003e parameter of\n\u003ccode\u003eOperations.add_column()\u003c/code\u003e did not include foreign key referential\nactions such as \u003ccode\u003eON DELETE\u003c/code\u003e, \u003ccode\u003eON UPDATE\u003c/code\u003e, \u003ccode\u003eDEFERRABLE\u003c/code\u003e,\n\u003ccode\u003eINITIALLY\u003c/code\u003e, and \u003ccode\u003eMATCH\u003c/code\u003e when rendering the inline \u003ccode\u003eREFERENCES\u003c/code\u003e\nclause.\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 `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.5.0 to 3.5.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.3 (2026-06-26)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix a crash on free-threaded builds when multiple greenlets were\nholding a critical section on an object and the GIL for the thread\nwas dropped. See \u003ccode\u003eissue 513 \u0026lt;https://github.com/python-greenlet/greenlet/issues/513\u0026gt;\u003c/code\u003e_. Thanks\nto ddorian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/6ee8c2c5b92fbf296c10219030d0bd3ab0ea6300\"\u003e\u003ccode\u003e6ee8c2c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6ec0bbba46fdcbfbf5fe4a37ab744aa3835f05c6\"\u003e\u003ccode\u003e6ec0bbb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/514\"\u003e#514\u003c/a\u003e from python-greenlet/issue513-preserve-crit-section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c03a7e6932c3b437bdf873acfc66fbaae31f1875\"\u003e\u003ccode\u003ec03a7e6\u003c/code\u003e\u003c/a\u003e Py3.13+: Preserve thread state critical_section to prevent crash on free-thre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/bc10829b9eb05d35bc0b8a09c8c6e4d54cfccc18\"\u003e\u003ccode\u003ebc10829\u003c/code\u003e\u003c/a\u003e Speed up manylinux test runs by only running the core checks; only start many...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/c2db75dca4bafa562ace9553b6e5c17af6b483e4\"\u003e\u003ccode\u003ec2db75d\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.0...3.5.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.12.1 to 2.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.13.0\u003c/h2\u003e\n\u003ch1\u003ePyJWT 2.13.0 — Security Release\u003c/h1\u003e\n\u003cp\u003eThis release bundles five security fixes plus three additional hardening / spec-compliance changes. We recommend all users upgrade.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\"\u003e\u003ccode\u003eGHSA-xgmm-8j9v-c9wx\u003c/code\u003e\u003c/a\u003e — JWK JSON accepted as HMAC secret (algorithm confusion).\u003c/strong\u003e \u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e previously rejected PEM- and SSH-formatted asymmetric keys but did not catch a JWK passed as a raw JSON string. In a verifier configured with both symmetric and asymmetric algorithms in \u003ccode\u003ealgorithms=[…]\u003c/code\u003e and a raw-JSON JWK as the key, an attacker could forge HS256 tokens using the JWK text as the HMAC secret. The guard has been extended to reject any JWK-shaped JSON. \u003cem\u003eReported by \u003ca href=\"https://github.com/aradona91\"\u003e\u003ccode\u003e@​aradona91\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\"\u003e\u003ccode\u003eGHSA-jq35-7prp-9v3f\u003c/code\u003e\u003c/a\u003e — Algorithm allow-list bypass with \u003ccode\u003ePyJWK\u003c/code\u003e / \u003ccode\u003ePyJWKClient\u003c/code\u003e.\u003c/strong\u003e When verifying with a \u003ccode\u003ePyJWK\u003c/code\u003e, the caller's \u003ccode\u003ealgorithms=[…]\u003c/code\u003e allow-list was checked against the token header \u003ccode\u003ealg\u003c/code\u003e as a string only; actual verification used the algorithm bound to the \u003ccode\u003ePyJWK\u003c/code\u003e. An attacker who controlled a registered JWKS key could sign with one algorithm and advertise another on the header. PyJWT now requires the token header \u003ccode\u003ealg\u003c/code\u003e to match the \u003ccode\u003ePyJWK\u003c/code\u003e's algorithm before verification. \u003cem\u003eReported by \u003ca href=\"https://github.com/sushi-gif\"\u003e\u003ccode\u003e@​sushi-gif\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\"\u003e\u003ccode\u003eGHSA-w7vc-732c-9m39\u003c/code\u003e\u003c/a\u003e — DoS via base64 decode of unused payload segment when \u003ccode\u003eb64=false\u003c/code\u003e.\u003c/strong\u003e For detached-payload JWS (\u003ccode\u003eb64=false\u003c/code\u003e), the compact-form payload segment was base64-decoded before being discarded in favor of the caller-supplied \u003ccode\u003edetached_payload\u003c/code\u003e. An attacker could inflate the unused segment to force CPU + memory cost without holding a valid signature. The segment is now required to be empty per RFC 7515 Appendix F, and is no longer decoded. \u003cem\u003eReported by \u003ca href=\"https://github.com/thesmartshadow\"\u003e\u003ccode\u003e@​thesmartshadow\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\"\u003e\u003ccode\u003eGHSA-993g-76c3-p5m4\u003c/code\u003e\u003c/a\u003e — \u003ccode\u003ePyJWKClient\u003c/code\u003e accepts non-HTTP(S) URIs.\u003c/strong\u003e \u003ccode\u003ePyJWKClient.fetch_data\u003c/code\u003e passed its URI to \u003ccode\u003eurllib.request.urlopen\u003c/code\u003e, which by default also handles \u003ccode\u003efile://\u003c/code\u003e, \u003ccode\u003eftp://\u003c/code\u003e, and \u003ccode\u003edata:\u003c/code\u003e schemes. An application that fed an attacker-influenced URI into \u003ccode\u003ePyJWKClient\u003c/code\u003e could be coerced into reading local files or reaching other unintended schemes. \u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects any URI whose scheme isn't \u003ccode\u003ehttp\u003c/code\u003e or \u003ccode\u003ehttps\u003c/code\u003e. \u003cem\u003eReported by \u003ca href=\"https://github.com/KEIJOT\"\u003e\u003ccode\u003e@​KEIJOT\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8\"\u003e\u003ccode\u003eGHSA-fhv5-28vv-h8m8\u003c/code\u003e\u003c/a\u003e — \u003ccode\u003ePyJWKClient\u003c/code\u003e cache wiped on fetch error.\u003c/strong\u003e A \u003ccode\u003efinally\u003c/code\u003e-block \u003ccode\u003eput(jwk_set=None)\u003c/code\u003e cleared the JWK Set cache whenever a fetch raised, turning a transient JWKS-endpoint outage into application-wide auth failure. The cache write was moved into the success path; transient errors no longer evict valid cached keys. \u003cem\u003eReported by \u003ca href=\"https://github.com/eddieran\"\u003e\u003ccode\u003e@​eddieran\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject empty HMAC keys outright in \u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e with \u003ccode\u003eInvalidKeyError\u003c/code\u003e instead of accepting them with only a warning. Defends against the \u003ccode\u003eos.getenv(\u0026quot;JWT_SECRET\u0026quot;, \u0026quot;\u0026quot;)\u003c/code\u003e footgun. \u003cem\u003eThanks to \u003ca href=\"https://github.com/SnailSploit\"\u003e\u003ccode\u003e@​SnailSploit\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/spartan8806\"\u003e\u003ccode\u003e@​spartan8806\u003c/code\u003e\u003c/a\u003e for the reports.\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003eForward per-call \u003ccode\u003eoptions\u003c/code\u003e (including \u003ccode\u003eenforce_minimum_key_length\u003c/code\u003e) from \u003ccode\u003ePyJWT.decode\u003c/code\u003e through to \u003ccode\u003ePyJWS._verify_signature\u003c/code\u003e. The option was previously silently dropped between the two layers, so it only took effect when set on the \u003ccode\u003ePyJWT\u003c/code\u003e instance. \u003cem\u003eThanks to \u003ca href=\"https://github.com/WLUB\"\u003e\u003ccode\u003e@​WLUB\u003c/code\u003e\u003c/a\u003e for the report.\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRFC 7797 §3 compliance for \u003ccode\u003eb64=false\u003c/code\u003e:\u003c/strong\u003e the encoder now auto-adds \u003ccode\u003e\u0026quot;b64\u0026quot;\u003c/code\u003e to \u003ccode\u003ecrit\u003c/code\u003e, and the decoder rejects tokens that set \u003ccode\u003eb64=false\u003c/code\u003e without listing it in \u003ccode\u003ecrit\u003c/code\u003e. \u003cem\u003eThanks to \u003ca href=\"https://github.com/MachineLearning-Nerd\"\u003e\u003ccode\u003e@​MachineLearning-Nerd\u003c/code\u003e\u003c/a\u003e for the report.\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate the \u003ccode\u003edev\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, and \u003ccode\u003etests\u003c/code\u003e package extras to dependency groups, by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1152\"\u003e#1152\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade notes\u003c/h2\u003e\n\u003cp\u003eMost fixes are invisible to correctly-configured callers. A few behavioral changes you may encounter:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEmpty HMAC keys now raise.\u003c/strong\u003e If your app passed \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e or \u003ccode\u003eb\u0026quot;\u0026quot;\u003c/code\u003e as a secret (often via a missing env var, e.g. \u003ccode\u003eos.getenv(\u0026quot;JWT_SECRET\u0026quot;, \u0026quot;\u0026quot;)\u003c/code\u003e), \u003ccode\u003eencode\u003c/code\u003e/\u003ccode\u003edecode\u003c/code\u003e will now raise \u003ccode\u003eInvalidKeyError\u003c/code\u003e. This is the intended behavior — fix the configuration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePyJWK\u003c/code\u003e decoding now requires the token's \u003ccode\u003ealg\u003c/code\u003e to match the JWK's algorithm.\u003c/strong\u003e Previously a mismatch was silently honored if the header \u003ccode\u003ealg\u003c/code\u003e appeared in the allow-list. Tokens that relied on this mismatch will now fail with \u003ccode\u003eInvalidAlgorithmError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects non-HTTP(S) URIs at construction time.\u003c/strong\u003e Tests or dev environments that fetched JWKS from \u003ccode\u003efile://\u003c/code\u003e URIs need to switch to a local HTTP server or load the JWKS by other means (e.g. construct \u003ccode\u003ePyJWKSet.from_dict(...)\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eb64=false\u003c/code\u003e tokens are now strictly RFC 7515 / 7797 compliant.\u003c/strong\u003e Tokens with a non-empty compact-form payload segment, or that omit \u003ccode\u003e\u0026quot;b64\u0026quot;\u003c/code\u003e from \u003ccode\u003ecrit\u003c/code\u003e, will be rejected. PyJWT-produced tokens always satisfy both invariants, so round-trips through PyJWT are unaffected.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eenforce_minimum_key_length\u003c/code\u003e set per-call now takes effect.\u003c/strong\u003e Callers who passed \u003ccode\u003eoptions={\u0026quot;enforce_minimum_key_length\u0026quot;: True}\u003c/code\u003e to \u003ccode\u003ejwt.decode()\u003c/code\u003e previously got no enforcement; they will now get \u003ccode\u003eInvalidKeyError\u003c/code\u003e on undersized keys, as documented.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.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/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.13.0 \u0026lt;https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eSecurity\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Reject JWK JSON documents passed as raw HMAC secrets in\n  ``HMACAlgorithm.prepare_key`` to close an algorithm-confusion gap that\n  the existing PEM/SSH guard did not cover. Reported by @aradona91 in\n  `GHSA-xgmm-8j9v-c9wx \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\u0026gt;`__.\n- Bind the JWT header ``alg`` to ``PyJWK.algorithm_name`` during\n  verification so the caller's ``algorithms=[...]`` allow-list cannot be\n  bypassed when decoding with a ``PyJWK`` / ``PyJWKClient`` key. Reported\n  by @sushi-gif in `GHSA-jq35-7prp-9v3f \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\u0026gt;`__.\n- Reject non-``http(s)`` URI schemes in ``PyJWKClient`` so attacker-\n  influenced URIs cannot read local files or reach unintended schemes via\n  urllib's default ``file://`` / ``ftp://`` / ``data:`` handlers. Reported\n  by @KEIJOT in `GHSA-993g-76c3-p5m4 \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\u0026gt;`__.\n- Preserve the cached JWK Set on fetch errors in ``PyJWKClient.fetch_data``.\n  The previous ``finally``-block ``put(None)`` pattern cleared the cache\n  on any transient outage, turning one bad JWKS request into application-\n  wide auth failure. Reported by @eddieran in `GHSA-fhv5-28vv-h8m8 \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8\u0026gt;`__.\n- Skip the unconditional base64 decode of the compact-form payload segment\n  when ``b64=false`` is set in the protected header, and require that\n  segment to be empty (RFC 7515 Appendix F detached form). Closes an\n  unauthenticated DoS amplifier. Reported by @thesmartshadow in\n  `GHSA-w7vc-732c-9m39 \u0026lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\u0026gt;`__.\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Reject empty HMAC keys outright in ``HMACAlgorithm.prepare_key`` with\n  ``InvalidKeyError`` instead of accepting them with only a warning.\n  Thanks to @SnailSploit and @spartan8806 for independently flagging the\n  footgun.\n- Forward per-call ``options`` (including ``enforce_minimum_key_length``)\n  from ``PyJWT.decode`` through to ``PyJWS._verify_signature`` so the\n  option actually takes effect when set at the call site rather than only\n  on the ``PyJWT`` instance. Thanks to @WLUB for the report.\n- RFC 7797 §3 compliance for ``b64=false``: the encoder now auto-adds\n  ``\u0026amp;quot;b64\u0026amp;quot;`` to the ``crit`` header parameter, and the decoder rejects\n  tokens that set ``b64=false`` without listing it in ``crit``. Thanks to\n  @MachineLearning-Nerd for the report.\n\nChanged\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate the \u003ccode\u003edev\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, and \u003ccode\u003etests\u003c/code\u003e package extras to dependency groups by \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e in \u003ccode\u003e[#1152](https://github.com/jpadilla/pyjwt/issues/1152) \u0026amp;lt;https://github.com/jpadilla/pyjwt/pull/1152\u0026amp;gt;\u003c/code\u003e__\n\u003c/code\u003e\u003c/pre\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/jpadilla/pyjwt/commit/7144e4534c34810f4525dc4578a32addd8212cff\"\u003e\u003ccode\u003e7144e45\u003c/code\u003e\u003c/a\u003e Apply ruff format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/d2f4bec4963897c0ef96ef64a875894f2c8542ab\"\u003e\u003ccode\u003ed2f4bec\u003c/code\u003e\u003c/a\u003e Restore \u003ccode\u003ecast()\u003c/code\u003e calls with cross-version \u003ccode\u003etype: ignore\u003c/code\u003e for \u003ccode\u003eprepare_key\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/22f478cebddd8294259c30f037ecb92b0b348774\"\u003e\u003ccode\u003e22f478c\u003c/code\u003e\u003c/a\u003e Remove redundant casts in \u003ccode\u003eRSAAlgorithm.prepare_key\u003c/code\u003e and `ECAlgorithm.prepare...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/95791b1759b8aa4f2203575d344d5c78564cdc81\"\u003e\u003ccode\u003e95791b1\u003c/code\u003e\u003c/a\u003e Bundle security fixes and hardening into 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/dcc27a9d3182a2349c30b160758785c6ce7a6508\"\u003e\u003ccode\u003edcc27a9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/9d08a9a1896845ed8eaf88e6f6ac61e5800c3e7a\"\u003e\u003ccode\u003e9d08a9a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1146\"\u003e#1146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/b87c10014d4109f0214fea188d00faaaf8a80e64\"\u003e\u003ccode\u003eb87c100\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5 to 6 (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1154\"\u003e#1154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/40e3147eb5f790d8d041772e5fc00728a176c812\"\u003e\u003ccode\u003e40e3147\u003c/code\u003e\u003c/a\u003e Migrate development extras to dependency groups (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release adds \u003ca href=\"https://narwhals-dev.github.io/narwhals/\"\u003enarwhals\u003c/a\u003e as a new dependency that will help to improve dataframe interoperability across the project.\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/77def0ed6e3beab57244885d2a584470e96c103d\"\u003e\u003ccode\u003e77def0e\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ee7c0b0e34ffe0f5eff8c7aeda49783f70bd9faa\"\u003e\u003ccode\u003eee7c0b0\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/3d7fb048fc5f05555a202d2b24307628841904b5\"\u003e\u003ccode\u003e3d7fb04\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8954e7baf1f827320b17817f0ab76d025f5e6421\"\u003e\u003ccode\u003e8954e7b\u003c/code\u003e\u003c/a\u003e DOC Release highlights for 1.9 (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34147\"\u003e#34147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73a3eab9d7bc58b695e4da8765044815b90b8dee\"\u003e\u003ccode\u003e73a3eab\u003c/code\u003e\u003c/a\u003e Fix: Array-API - avoid failing for numpy fit + predict with sparse or array-l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8839aaeb2fa2a4e3ad2f0a5a69b5f427cffe1dd1\"\u003e\u003ccode\u003e8839aae\u003c/code\u003e\u003c/a\u003e DOC Thread-safety requirement for open_listener message consumer callback (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/4d2476a4e2acc9429b96d8ee80218a96d24c2bde\"\u003e\u003ccode\u003e4d2476a\u003c/code\u003e\u003c/a\u003e DOC Refactor array API docs page (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34054\"\u003e#34054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f9f812fe6a4ea54c482da6b195773917b636365e\"\u003e\u003ccode\u003ef9f812f\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d779dc335a31d74ef472003d9012066f07ee8834\"\u003e\u003ccode\u003ed779dc3\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/6a03cf0906987ce77b37e780ccdebbe3f85e9235\"\u003e\u003ccode\u003e6a03cf0\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.8.0...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.4.5 to 2.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0 (June 21, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.5.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eNumpy 2.5.0 is a transitional release. It drops support for Python 3.11,\nmarking the end of distutils, and expires a large number of deprecations made\nin the 2.0.x release. It al...\n\n_Description has been truncated_","html_url":"https://github.com/AlexMatei1/honey-strike/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexMatei1%2Fhoney-strike/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"2.0.50","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-22T09:12:31.000Z","version_change":"2.0.50 → 2.0.51","issue":{"uuid":"4715141486","node_id":"PR_kwDOQKRmjs7pFxWt","number":46,"state":"open","title":"chore(deps)(deps): bump sqlalchemy from 2.0.50 to 2.0.51","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-22T09:12:31.000Z","updated_at":"2026-06-22T09:12:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps)","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.50\u0026new-version=2.0.51)](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/CrashBytes/enterprise-ai-agent/pull/46","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrashBytes%2Fenterprise-ai-agent/issues/46","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/46/packages"}},{"old_version":"2.0.25","new_version":"2.0.51","update_type":"patch","path":"/backend","pr_created_at":"2026-06-22T01:54:36.000Z","version_change":"2.0.25 → 2.0.51","issue":{"uuid":"4712754408","node_id":"PR_kwDOQzd4z87o99KR","number":504,"state":"open","title":"build(deps): bump sqlalchemy from 2.0.25 to 2.0.51 in /backend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-22T01:54:36.000Z","updated_at":"2026-06-22T01:54:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"sqlalchemy","old_version":"2.0.25","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.25 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.25\u0026new-version=2.0.51)](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/w4g0n/innova-cx/pull/504","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/w4g0n%2Finnova-cx/issues/504","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/504/packages"}},{"old_version":"2.0.48","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-22T00:38:58.000Z","version_change":"2.0.48 → 2.0.51","issue":{"uuid":"4712521442","node_id":"PR_kwDOQFZ20c7o9OLl","number":108,"state":"open","title":"chore(deps): bump the python-minor group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-22T00:38:58.000Z","updated_at":"2026-06-22T00:39:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor","update_count":27,"packages":[{"name":"fastapi","old_version":"0.135.2","new_version":"0.138.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"githubkit-schemas","old_version":"26.6.14","new_version":"26.6.20","repository_url":"https://github.com/yanyongyu/githubkit"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"sentry-sdk","old_version":"2.54.0","new_version":"2.63.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"starlette","old_version":"1.0.1","new_version":"1.3.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"filelock","old_version":"3.28.0","new_version":"3.29.4","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"pytest","old_version":"9.0.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.18","repository_url":"https://github.com/astral-sh/ruff"},{"name":"anyio","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"click","old_version":"8.3.1","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.15","new_version":"3.18","repository_url":"https://github.com/kjd/idna"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.47.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wrapt","old_version":"2.0.1","new_version":"2.2.2","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"coverage","old_version":"7.12.0","new_version":"7.14.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"librt","old_version":"0.7.5","new_version":"0.11.0","repository_url":"https://github.com/mypyc/librt"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 27 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.2` | `0.138.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.49.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.51` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.2` |\n| [githubkit-schemas](https://github.com/yanyongyu/githubkit) | `26.6.14` | `26.6.20` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.14.2` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.54.0` | `2.63.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.1` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.28.0` | `3.29.4` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.18` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.0` | `4.14.0` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.4.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.18` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.47.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.0.1` | `2.2.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.12.0` | `7.14.2` |\n| [librt](https://github.com/mypyc/librt) | `0.7.5` | `0.11.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n\n\nUpdates `fastapi` from 0.135.2 to 0.138.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15759\"\u003e#15759\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15757\"\u003e#15757\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15756\"\u003e#15756\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15755\"\u003e#15755\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15754\"\u003e#15754\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15753\"\u003e#15753\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15752\"\u003e#15752\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15751\"\u003e#15751\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15758\"\u003e#15758\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Update sponsors: add BairesDev. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15787\"\u003e#15787\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Update sponsors script to simplify previews. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15786\"\u003e#15786\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b83b0d409009c8de9df4070fe163838b1a700c7\"\u003e\u003ccode\u003e4b83b0d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15808\"\u003e#15808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/041cb0cdfa2d0f705d14ed07c2c2e0f92ef5f32c\"\u003e\u003ccode\u003e041cb0c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/10393846ede7a2947cec594d15a43f813001cab4\"\u003e\u003ccode\u003e1039384\u003c/code\u003e\u003c/a\u003e 📝 Fix typo in release notes (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15807\"\u003e#15807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0303491b69ff84a4632c0314e6db4df74f2f93f9\"\u003e\u003ccode\u003e0303491\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/190f6e2033c8b886b25027be284d8c8c1893f28c\"\u003e\u003ccode\u003e190f6e2\u003c/code\u003e\u003c/a\u003e 📝 Add Frontend instructions to Agent Library Skill (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15805\"\u003e#15805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/17945e5ab7f25234340c152a40d232a98857e079\"\u003e\u003ccode\u003e17945e5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2260afaf433103c8104b34d256cf0b96b058823b\"\u003e\u003ccode\u003e2260afa\u003c/code\u003e\u003c/a\u003e 🐛 Fix failing test, update format for raised errors (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15804\"\u003e#15804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0cd5001d0ef80a07e2d775c5c75522391a3e06d7\"\u003e\u003ccode\u003e0cd5001\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7cb1ab6264bc03319832f553730b511192a0c0d3\"\u003e\u003ccode\u003e7cb1ab6\u003c/code\u003e\u003c/a\u003e 👷 Fix test-alls-green (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15803\"\u003e#15803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9c7eceb00ff6e1d37980954418f7c9dab30a4cd5\"\u003e\u003ccode\u003e9c7eceb\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.2...0.138.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.41.0 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\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/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.49.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.27 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.31\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003eKludex/python-multipart#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003eKludex/python-multipart#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate Content-Length is non-negative in parse_form by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003eKludex/python-multipart#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.30\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTreat only \u003ccode\u003e\u0026amp;\u003c/code\u003e as the urlencoded field separator by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003eKludex/python-multipart#290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231 extended parameters in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003eKludex/python-multipart#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.29\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/manunio\"\u003e\u003ccode\u003e@​manunio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003eKludex/python-multipart#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.31 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003e#296\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eContent-Length\u003c/code\u003e is non-negative in \u003ccode\u003eparse_form\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003e#297\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30 (2026-05-31)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParse \u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e bodies per the WHATWG URL standard, treating only \u003ccode\u003e\u0026amp;\u003c/code\u003e as a field separator \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003e#290\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231/5987 extended parameters (\u003ccode\u003ename*\u003c/code\u003e, \u003ccode\u003efilename*\u003c/code\u003e) in \u003ccode\u003eparse_options_header\u003c/code\u003e, keeping the plain parameter authoritative per \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7578#section-4.2\"\u003eRFC 7578 §4.2\u003c/a\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003e#291\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29 (2026-05-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003e#270\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/4cffc68a165f7a6f6b7756ce006fabf07a05b7a4\"\u003e\u003ccode\u003e4cffc68\u003c/code\u003e\u003c/a\u003e Version 0.0.31 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/c814948acf509cef7881fa75c969969b19239bbf\"\u003e\u003ccode\u003ec814948\u003c/code\u003e\u003c/a\u003e Reject negative \u003ccode\u003eContent-Length\u003c/code\u003e in \u003ccode\u003eparse_form\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6b837d47bc68826ed5cbbcb50c6c6a6093444494\"\u003e\u003ccode\u003e6b837d4\u003c/code\u003e\u003c/a\u003e Bound header field name size before validating (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/e0c4f9df2e737d1663fbbdd6563f80613a2089f9\"\u003e\u003ccode\u003ee0c4f9d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b8a01bb683e8e8675fdb5d831b206a478c8215aa\"\u003e\u003ccode\u003eb8a01bb\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6732164f30c58e28589a1e22213d2f6b8c6bad9f\"\u003e\u003ccode\u003e6732164\u003c/code\u003e\u003c/a\u003e Speed up multipart header parsing and callback dispatch (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.32\"\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.48 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `greenlet` from 3.3.2 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.2 (2026-06-17)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum supported version of Python 3.15 is now 3.15b2.\u003c/li\u003e\n\u003cli\u003eFix some garbage-collection related crashes on free-threaded Python\n3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#511](https://github.com/python-greenlet/greenlet/issues/511) \u0026lt;https://github.com/python-greenlet/greenlet/pull/511\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eImprove garbage collection of greenlets. This mostly applies to\nPython 3.15. Thanks to Kumar Aditya in \u003ccode\u003ePR [#512](https://github.com/python-greenlet/greenlet/issues/512) \u0026lt;https://github.com/python-greenlet/greenlet/pull/512\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.1 (2026-05-20)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd preliminary support for Python 3.15b1. This has not been\nreviewed by CPython core developers, but all tests pass. Binary\nwheels of this version won't work on earlier Python 3.15 builds and\nmay not work on later 3.15 builds.\u003c/li\u003e\n\u003cli\u003eFix the discrepancy in the way the two \u003ccode\u003egetcurrent\u003c/code\u003e APIs behave\nduring greenlet teardown. One API (the C API used by, e.g.,  gevent) raised a\n\u003ccode\u003eRuntimeError\u003c/code\u003e; the other (the Python \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e API)\nreturned \u003ccode\u003eNone\u003c/code\u003e. This second way is incompatible with greenlet's type\nannotations, so \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e now raises a\n\u003ccode\u003eRuntimeError\u003c/code\u003e as well.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.0 (2026-04-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRemove the \u003ccode\u003eatexit\u003c/code\u003e callback. This callback caused greenlet APIs\nto become unavailable far too soon during interpreter shutdown. Now\nthey remain available while all \u003ccode\u003eatexit\u003c/code\u003e callbacks run. Sometime\nafter \u003ccode\u003ePy_IsFinalizing\u003c/code\u003e becomes true, they may begin misbehaving.\nBecause the order in which C extensions are finalized is undefined,\nC extensions that are sensitive to this need to check the results of\nthat function before invoking greenlet APIs. As a convenience,\n\u003ccode\u003ePyGreenlet_GetCurrent\u003c/code\u003e sets an exception and returns \u003ccode\u003eNULL\u003c/code\u003e\nwhen this happens (and \u003ccode\u003egreenlet.getcurrent\u003c/code\u003e begins returning\n\u003ccode\u003eNone\u003c/code\u003e); other greenlet C API functions have undefined behaviour.\nMethods invoked directly on pre-existing \u003ccode\u003egreenlet.greenlet\u003c/code\u003e\nobjects will continue to function at least until the greenlet C\nextension has been garbage collected and finalized.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003ePR 508 \u0026lt;https://github.com/python-greenlet/greenlet/pull/508\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.4.0 (2026-04-08)\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/0b64e9c851ae7bd8fc9b73d98031168237ee71db\"\u003e\u003ccode\u003e0b64e9c\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/3e28d276d01e74882f4cff1a4b54aed47153d617\"\u003e\u003ccode\u003e3e28d27\u003c/code\u003e\u003c/a\u003e Add change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6563c5e909a84c037c3d03e46851cd3016525a35\"\u003e\u003ccode\u003e6563c5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/512\"\u003e#512\u003c/a\u003e from kumaraditya303/ft-mem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ab6eff60766e8954d890eef064ee2e1dd7c8b262\"\u003e\u003ccode\u003eab6eff6\u003c/code\u003e\u003c/a\u003e add ignore for win 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/41f5349a0f1b69ce180c90acb9a4cf2c84d612e7\"\u003e\u003ccode\u003e41f5349\u003c/code\u003e\u003c/a\u003e revert back to fails_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/b0aac05734e9e41d4a592e0c913846990a9c7c24\"\u003e\u003ccode\u003eb0aac05\u003c/code\u003e\u003c/a\u003e set fail-fast=false and if condition correctly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/2f87f316613d401bbf1b1653595654654e572550\"\u003e\u003ccode\u003e2f87f31\u003c/code\u003e\u003c/a\u003e rename to ignores_leakcheck_on_py314_or_less\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/28bbde3de939acefe8e9d72fb179115b81392a87\"\u003e\u003ccode\u003e28bbde3\u003c/code\u003e\u003c/a\u003e add comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/35206b8dc536cfe92c09509432b4a301b5fede5f\"\u003e\u003ccode\u003e35206b8\u003c/code\u003e\u003c/a\u003e fix test and restrict tp_is_gc \u0026lt; 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/abdbab55b03334700fd264e523ac75926daba043\"\u003e\u003ccode\u003eabdbab5\u003c/code\u003e\u003c/a\u003e fix gil enabled\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.3.2...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `githubkit-schemas` from 26.6.14 to 26.6.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yanyongyu/githubkit/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.13.1 to 2.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is a security patch release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e from following symlinks outside \u003ccode\u003esecrets_dir\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003epydantic/pydantic-settings#889\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.2 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/890\"\u003epydantic/pydantic-settings#890\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cp\u003eFixes \u003ca href=\"https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j\"\u003eGHSA-4xgf-cpjx-pc3j\u003c/a\u003e: \u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e with \u003ccode\u003esecrets_nested_subdir=True\u003c/code\u003e could follow a symbolic link inside \u003ccode\u003esecrets_dir\u003c/code\u003e pointing outside it, reading out-of-tree files into settings values and bypassing the \u003ccode\u003esecrets_dir_max_size\u003c/code\u003e cap. Affected versions: \u003ccode\u003e\u0026gt;= 2.12.0, \u0026lt; 2.14.2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/850\"\u003epydantic/pydantic-settings#850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 5 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/854\"\u003epydantic/pydantic-settings#854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/853\"\u003epydantic/pydantic-settings#853\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/856\"\u003epydantic/pydantic-settings#856\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/858\"\u003epydantic/pydantic-settings#858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.1 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/859\"\u003epydantic/pydantic-settings#859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\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/pydantic/pydantic-settings/commit/d703bd717e5e07439fa89da2245eee6139413e9e\"\u003e\u003ccode\u003ed703bd7\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/890\"\u003e#890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf\"\u003e\u003ccode\u003ee95c30b\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621\"\u003e\u003ccode\u003e0c87345\u003c/code\u003e\u003c/a\u003e Fix field named \u003ccode\u003ecls\u003c/code\u003e conflicting with classmethod parameter (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7\"\u003e\u003ccode\u003e7bd0072\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b\"\u003e\u003ccode\u003eb03e573\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51\"\u003e\u003ccode\u003eeaa3b43\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 5 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/854\"\u003e#854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e\"\u003e\u003ccode\u003e9f95615\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slowapi` from 0.1.9 to 0.1.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/laurents/slowapi/releases\"\u003eslowapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.1.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update warn to warning py3.11 deprecation by \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: allow Requests to be sent to exempt_when by \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: drop python 3.7 and 3.8 from CI checks by \u003ca href=\"https://github.com/laurentS\"\u003e\u003ccode\u003e@​laurentS\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/238\"\u003elaurentS/slowapi#238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: prepare 0.1.10 release by \u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\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/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\"\u003ehttps://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\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/laurentS/slowapi/blob/master/CHANGELOG.md\"\u003eslowapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.10] - 2026-06-13\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: allow usage of the request object in the except_when function (thanks \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded more test exemption logic (thanks \u003ca href=\"https://github.com/colin99\"\u003e\u003ccode\u003e@​colin99\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix logger warning for Python 3.11 deprecation  (thanks \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\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/laurentS/slowapi/commit/75799a3ec9498af10110068190356f704f838fe3\"\u003e\u003ccode\u003e75799a3\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/6f22eabc90a793d8c8459b6a8115c6f7fbb05bc5\"\u003e\u003ccode\u003e6f22eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/212\"\u003e#212\u003c/a\u003e from ecly/release-v0.1.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/5e2b9c108f79471fc96a5152bb69774894660cd1\"\u003e\u003ccode\u003e5e2b9c1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/238\"\u003e#238\u003c/a\u003e from laurentS/drop-old-python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a83ec7211ea664fcb65580a386845832c112892d\"\u003e\u003ccode\u003ea83ec72\u003c/code\u003e\u003c/a\u003e Update README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/d1a20b6a4e0ba063bdb2160379be531c385c40a3\"\u003e\u003ccode\u003ed1a20b6\u003c/code\u003e\u003c/a\u003e Drop python 3.7 and 3.8 from CI checks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/8bf8b2ec55677aa3c9e0f9bed9f1a48f0b0b8d2e\"\u003e\u003ccode\u003e8bf8b2e\u003c/code\u003e\u003c/a\u003e Make exempt_when with request backwards compatible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/eaf5ba76cd8657693bcec6dec281a35053b1164b\"\u003e\u003ccode\u003eeaf5ba7\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a72bcc66597f620f04bf5be3676e40ed308d3a6a\"\u003e\u003ccode\u003ea72bcc6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/160\"\u003e#160\u003c/a\u003e from colin99d/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/42330fcddbf5ce22d18622ca14772cff256c2e74\"\u003e\u003ccode\u003e42330fc\u003c/code\u003e\u003c/a\u003e Merge branch 'laurentS:master' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/91145c087d658b6c3404935cd02155e291c2682b\"\u003e\u003ccode\u003e91145c0\u003c/code\u003e\u003c/a\u003e Fixed mypy error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/laurents/slowapi/compare/v0.1.9...v0.1.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.54.0 to 2.63.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.63.0\u003c/h2\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eFastapi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent double wrapping of sync handlers on FastAPI \u0026gt;= 0.137 by \u003ca href=\"https://github.com/jhonny-on\"\u003e\u003ccode\u003e@​jhonny-on\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6569\"\u003e#6569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse effective_route_context path for prefixed routers by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6572\"\u003e#6572\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(asgi) Gate query string and client IP behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6501\"\u003e#6501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(serializer) Avoid creating reference cycles on every call by \u003ca href=\"https://github.com/Malkiz223\"\u003e\u003ccode\u003e@​Malkiz223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6563\"\u003e#6563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(user) Set \u003ccode\u003euser.ip_address\u003c/code\u003e on telemetry if present by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6555\"\u003e#6555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove 0000 trace_id fallbacks by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6570\"\u003e#6570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMANIFEST.in: Graft tests directory. by \u003ca href=\"https://github.com/charlesroelli\"\u003e\u003ccode\u003e@​charlesroelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6237\"\u003e#6237\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(fastapi) Verify request info capture with POST endpoints by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6287\"\u003e#6287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(starlette) Verify request info capture with POST endpoints by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6269\"\u003e#6269\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.62.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd integration for \u003ccode\u003eaiomysql\u003c/code\u003e by \u003ca href=\"https://github.com/tonal\"\u003e\u003ccode\u003e@​tonal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/4703\"\u003e#4703\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe're adding support for the \u003ccode\u003eaiomysql\u003c/code\u003e package. To enable the integration, add it to your \u003ccode\u003eintegrations\u003c/code\u003e list:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.aiomysql import AioMySQLIntegration\n\u003cp\u003esentry_sdk.init(\ntraces_sample_rate=1.0,\nintegrations=[AioMySQLIntegration()],\n)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport HTTPX2 by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/Dashtid/portfolio-site/pull/108","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dashtid%2Fportfolio-site/issues/108","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/108/packages"}},{"old_version":"\u003e=2.0.50","new_version":"\u003e=2.0.51","update_type":"patch","path":"/e2e-python","pr_created_at":"2026-06-21T10:12:38.000Z","version_change":"\u003e=2.0.50 → \u003e=2.0.51","issue":{"uuid":"4710115532","node_id":"PR_kwDOF6e2dM7o11U1","number":4676,"state":"open","title":"chore(deps): update sqlalchemy requirement from \u003e=2.0.50 to \u003e=2.0.51 in /e2e-python","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-21T10:12:38.000Z","updated_at":"2026-06-21T10:17:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"sqlalchemy","old_version":"\u003e=2.0.50","new_version":"\u003e=2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/e2e-python","ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\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/ArcadeData/arcadedb/pull/4676","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArcadeData%2Farcadedb/issues/4676","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4676/packages"}},{"old_version":"2.0.49","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-20T01:28:48.000Z","version_change":"2.0.49 → 2.0.51","issue":{"uuid":"4704616621","node_id":"PR_kwDOSMAT387okpt2","number":41,"state":"closed","title":"chore(deps): Bump the backend-patch-minor group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-27T01:25:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-20T01:28:48.000Z","updated_at":"2026-06-27T01:25:51.000Z","time_to_close":604621,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"backend-patch-minor","update_count":27,"packages":[{"name":"fastapi","old_version":"0.136.1","new_version":"0.138.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.3","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"scipy","old_version":"1.17.1","new_version":"1.18.0","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"shap","old_version":"0.44.1","new_version":"0.52.0","repository_url":"https://github.com/shap/shap"},{"name":"tqdm","old_version":"4.67.3","new_version":"4.68.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"matplotlib","old_version":"3.10.9","new_version":"3.11.0","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"orjson","old_version":"3.11.8","new_version":"3.11.9","repository_url":"https://github.com/ijl/orjson"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"anndata","old_version":"0.12.11","new_version":"0.12.17","repository_url":"https://github.com/scverse/anndata"},{"name":"pydantic-settings","old_version":"2.14.0","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"torch","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"notebook","old_version":"7.5.5","new_version":"7.6.0","repository_url":"https://github.com/jupyter/notebook"},{"name":"boto3","old_version":"1.42.96","new_version":"1.43.34","repository_url":"https://github.com/boto/boto3"},{"name":"azure-storage-blob","old_version":"12.28.0","new_version":"12.30.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"msgpack","old_version":"1.1.2","new_version":"1.2.1","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"pysam","old_version":"0.23.3","new_version":"0.24.0","repository_url":"https://github.com/pysam-developers/pysam"},{"name":"pika","old_version":"1.3.2","new_version":"1.4.1","repository_url":"https://github.com/pika/pika"},{"name":"bokeh","old_version":"3.9.0","new_version":"3.9.1","repository_url":"https://github.com/bokeh/bokeh"},{"name":"streamlit","old_version":"1.56.0","new_version":"1.58.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"locust","old_version":"2.43.4","new_version":"2.44.4","repository_url":"https://github.com/locustio/locust"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.1","repository_url":"https://github.com/coveragepy/coveragepy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-patch-minor group with 27 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.138.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.49.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.3` | `2.13.4` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.32` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.49` | `2.0.51` |\n| [scipy](https://github.com/scipy/scipy) | `1.17.1` | `1.18.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.0` |\n| [shap](https://github.com/shap/shap) | `0.44.1` | `0.52.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.3` | `4.68.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.9` | `3.11.0` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.8` | `3.11.9` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [anndata](https://github.com/scverse/anndata) | `0.12.11` | `0.12.17` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.0` | `2.14.2` |\n| [torch](https://github.com/pytorch/pytorch) | `2.11.0` | `2.12.1` |\n| [notebook](https://github.com/jupyter/notebook) | `7.5.5` | `7.6.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.96` | `1.43.34` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.28.0` | `12.30.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.2` | `1.2.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [pysam](https://github.com/pysam-developers/pysam) | `0.23.3` | `0.24.0` |\n| [pika](https://github.com/pika/pika) | `1.3.2` | `1.4.1` |\n| [bokeh](https://github.com/bokeh/bokeh) | `3.9.0` | `3.9.1` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.56.0` | `1.58.0` |\n| [locust](https://github.com/locustio/locust) | `2.43.4` | `2.44.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.1` |\n\n\nUpdates `fastapi` from 0.136.1 to 0.138.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.138.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003eapp.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e and \u003ccode\u003erouter.frontend(\u0026quot;/\u0026quot;, directory=\u0026quot;dist\u0026quot;)\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15800\"\u003e#15800\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eRead the docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/frontend/\"\u003eFrontend\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix typo in release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15807\"\u003e#15807\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eapp.frontend()\u003c/code\u003e instructions to Agent Library Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15805\"\u003e#15805\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update release notes link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15802\"\u003e#15802\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Update white space characters in bigger apps. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15801\"\u003e#15801\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix grammar, typos, and broken links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15694\"\u003e#15694\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Enable Hindi docs translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15554\"\u003e#15554\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix failing test, update format for raised errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15804\"\u003e#15804\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix test-alls-green. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15803\"\u003e#15803\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Enable checking \u003ccode\u003erelease-notes.md\u003c/code\u003e for typos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15796\"\u003e#15796\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Tweak wording about deploying to FastAPI Cloud. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15793\"\u003e#15793\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-5.5\u003c/code\u003e model in \u003ccode\u003etranslate.py\u003c/code\u003e, specify \u003ccode\u003e-chat\u003c/code\u003e to avoid warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15792\"\u003e#15792\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.137.2\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eiter_route_contexts()\u003c/code\u003e for advanced use cases that used to use \u003ccode\u003erouter.routes\u003c/code\u003e (e.g. Jupyverse). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15785\"\u003e#15785\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Fix broken Markdown in Korean custom response docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15774\"\u003e#15774\u003c/a\u003e by \u003ca href=\"https://github.com/kooqooo\"\u003e\u003ccode\u003e@​kooqooo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15761\"\u003e#15761\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15760\"\u003e#15760\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15759\"\u003e#15759\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15757\"\u003e#15757\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15756\"\u003e#15756\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15755\"\u003e#15755\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15754\"\u003e#15754\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15753\"\u003e#15753\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15752\"\u003e#15752\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15751\"\u003e#15751\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15758\"\u003e#15758\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Update sponsors: add BairesDev. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15787\"\u003e#15787\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Update sponsors script to simplify previews. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15786\"\u003e#15786\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b83b0d409009c8de9df4070fe163838b1a700c7\"\u003e\u003ccode\u003e4b83b0d\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.138.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15808\"\u003e#15808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/041cb0cdfa2d0f705d14ed07c2c2e0f92ef5f32c\"\u003e\u003ccode\u003e041cb0c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/10393846ede7a2947cec594d15a43f813001cab4\"\u003e\u003ccode\u003e1039384\u003c/code\u003e\u003c/a\u003e 📝 Fix typo in release notes (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15807\"\u003e#15807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0303491b69ff84a4632c0314e6db4df74f2f93f9\"\u003e\u003ccode\u003e0303491\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/190f6e2033c8b886b25027be284d8c8c1893f28c\"\u003e\u003ccode\u003e190f6e2\u003c/code\u003e\u003c/a\u003e 📝 Add Frontend instructions to Agent Library Skill (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15805\"\u003e#15805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/17945e5ab7f25234340c152a40d232a98857e079\"\u003e\u003ccode\u003e17945e5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2260afaf433103c8104b34d256cf0b96b058823b\"\u003e\u003ccode\u003e2260afa\u003c/code\u003e\u003c/a\u003e 🐛 Fix failing test, update format for raised errors (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15804\"\u003e#15804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0cd5001d0ef80a07e2d775c5c75522391a3e06d7\"\u003e\u003ccode\u003e0cd5001\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7cb1ab6264bc03319832f553730b511192a0c0d3\"\u003e\u003ccode\u003e7cb1ab6\u003c/code\u003e\u003c/a\u003e 👷 Fix test-alls-green (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15803\"\u003e#15803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9c7eceb00ff6e1d37980954418f7c9dab30a4cd5\"\u003e\u003ccode\u003e9c7eceb\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.1...0.138.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.46.0 to 0.49.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump httptools minimum version to 0.8.0 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2962\"\u003eKludex/uvicorn#2962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2971\"\u003eKludex/uvicorn#2971\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.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/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.49.0 (June 3, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003ehttptools\u003c/code\u003e minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (reverses the 0.48.0 behavior of ignoring them) (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3ef2e3e08e3d9ad9572800f8bc54f3eaed9eab0a\"\u003e\u003ccode\u003e3ef2e3e\u003c/code\u003e\u003c/a\u003e Version 0.49.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2973\"\u003e#2973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/eeb64b1d1c95a14096ed3313377c74b485f558fc\"\u003e\u003ccode\u003eeeb64b1\u003c/code\u003e\u003c/a\u003e Consume duplicate forwarding headers in ProxyHeadersMiddleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2971\"\u003e#2971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/630f4aca14e79183617c71be714030842a1041c5\"\u003e\u003ccode\u003e630f4ac\u003c/code\u003e\u003c/a\u003e Make the watchfiles reload tests deterministic (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2972\"\u003e#2972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9154922e3730f7aba68ecc3ecbf536680ee8fd1c\"\u003e\u003ccode\u003e9154922\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group across 1 directory with 6 updates ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/739727a1d80e468d1e47e98bbd824ee9e3c9554b\"\u003e\u003ccode\u003e739727a\u003c/code\u003e\u003c/a\u003e Migrate docs deploy from Cloudflare Pages to Workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2967\"\u003e#2967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/be4a240488d3fb678a11b8e8f83505266f5f1de7\"\u003e\u003ccode\u003ebe4a240\u003c/code\u003e\u003c/a\u003e Gate docs preview deploy on Cloudflare token presence (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c489d7e10dfe653a2bba914feedf2a632a026e6f\"\u003e\u003ccode\u003ec489d7e\u003c/code\u003e\u003c/a\u003e Bump httptools minimum version to 0.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2962\"\u003e#2962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9f547bd82ef52bcba206e04170b359bd6daa25b3\"\u003e\u003ccode\u003e9f547bd\u003c/code\u003e\u003c/a\u003e Skip docs preview deploy for Dependabot PRs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/44446b894e37ca76830d6aa83df4349795400ed4\"\u003e\u003ccode\u003e44446b8\u003c/code\u003e\u003c/a\u003e Migrate documentation from MkDocs Material to Zensical (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cfd659c4f18b526adce9c255c96707bab20af40c\"\u003e\u003ccode\u003ecfd659c\u003c/code\u003e\u003c/a\u003e Bump pymdown-extensions to 10.21.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2958\"\u003e#2958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.49.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.3 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.26 to 0.0.32\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.32\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace per-byte partial-boundary scan with rfind lookbehind by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003eKludex/python-multipart#300\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.31...0.0.32\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.31\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003eKludex/python-multipart#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003eKludex/python-multipart#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate Content-Length is non-negative in parse_form by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003eKludex/python-multipart#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.30...0.0.31\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.30\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTreat only \u003ccode\u003e\u0026amp;\u003c/code\u003e as the urlencoded field separator by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003eKludex/python-multipart#290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231 extended parameters in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003eKludex/python-multipart#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.29...0.0.30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.29\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e by \u003ca href=\"https://github.com/manunio\"\u003e\u003ccode\u003e@​manunio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003eKludex/python-multipart#270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.28...0.0.29\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.28\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003eKludex/python-multipart#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003eKludex/python-multipart#282\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.27...0.0.28\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.0.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePass parse offsets via constructors by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003eKludex/python-multipart#268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multipart header limits by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003eKludex/python-multipart#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.32 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary scanning for CR/LF-dense part data \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/300\"\u003e#300\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.31 (2026-06-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up multipart header parsing and callback dispatch \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBound header field name size before validating \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/296\"\u003e#296\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eContent-Length\u003c/code\u003e is non-negative in \u003ccode\u003eparse_form\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/297\"\u003e#297\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.30 (2026-05-31)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParse \u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e bodies per the WHATWG URL standard, treating only \u003ccode\u003e\u0026amp;\u003c/code\u003e as a field separator \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/290\"\u003e#290\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore RFC 2231/5987 extended parameters (\u003ccode\u003ename*\u003c/code\u003e, \u003ccode\u003efilename*\u003c/code\u003e) in \u003ccode\u003eparse_options_header\u003c/code\u003e, keeping the plain parameter authoritative per \u003ca href=\"https://datatracker.ietf.org/doc/html/rfc7578#section-4.2\"\u003eRFC 7578 §4.2\u003c/a\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/291\"\u003e#291\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.29 (2026-05-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle malformed RFC 2231 continuations in \u003ccode\u003eparse_options_header\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/270\"\u003e#270\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.28 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up partial-boundary tail scan via \u003ccode\u003ebytes.find\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/281\"\u003e#281\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCap multipart boundary length at 256 bytes \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/282\"\u003e#282\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.27 (2026-04-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multipart header limits \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003e#267\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePass parse offsets via constructors \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003e#268\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/238ead62a0bb6f6cdfe122708faa13812f59f9a6\"\u003e\u003ccode\u003e238ead6\u003c/code\u003e\u003c/a\u003e Version 0.0.32 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/86729796093b04f7cf414ea6c2c4499e2a5750af\"\u003e\u003ccode\u003e8672979\u003c/code\u003e\u003c/a\u003e Replace per-byte partial-boundary scan with rfind lookbehind (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/8190779d8234c8bf8cbed7891c11d4bfb79e84df\"\u003e\u003ccode\u003e8190779\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 7 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0d3c086d237f6fd20fefe8853e95979276a07c44\"\u003e\u003ccode\u003e0d3c086\u003c/code\u003e\u003c/a\u003e Use uv package ecosystem for Dependabot (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/4cffc68a165f7a6f6b7756ce006fabf07a05b7a4\"\u003e\u003ccode\u003e4cffc68\u003c/code\u003e\u003c/a\u003e Version 0.0.31 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/c814948acf509cef7881fa75c969969b19239bbf\"\u003e\u003ccode\u003ec814948\u003c/code\u003e\u003c/a\u003e Reject negative \u003ccode\u003eContent-Length\u003c/code\u003e in \u003ccode\u003eparse_form\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6b837d47bc68826ed5cbbcb50c6c6a6093444494\"\u003e\u003ccode\u003e6b837d4\u003c/code\u003e\u003c/a\u003e Bound header field name size before validating (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/e0c4f9df2e737d1663fbbdd6563f80613a2089f9\"\u003e\u003ccode\u003ee0c4f9d\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b8a01bb683e8e8675fdb5d831b206a478c8215aa\"\u003e\u003ccode\u003eb8a01bb\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6732164f30c58e28589a1e22213d2f6b8c6bad9f\"\u003e\u003ccode\u003e6732164\u003c/code\u003e\u003c/a\u003e Speed up multipart header parsing and callback dispatch (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.32\"\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.49 to 2.0.51\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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 `scipy` from 1.17.1 to 1.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.18.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.18.0\u003c/code\u003e is the culmination of \u003ccode\u003e6\u003c/code\u003e months of hard work. It contains\nmany new features, numerous bug-fixes, improved test coverage and better\ndocumentation. There have been a number of deprecations and API changes\nin this release, which are documented below. All users are encouraged to\nupgrade to this release, as there are a large number of bug-fixes and\noptimizations. Before upgrading, we recommend that users check that\ntheir own code does not use deprecated SciPy functionality (to do so,\nrun your code with \u003ccode\u003epython -Wd\u003c/code\u003e and check for \u003ccode\u003eDeprecationWarning\u003c/code\u003e s).\nOur development attention will now shift to bug-fix releases on the\n1.18.x branch, and on adding new features on the main branch.\u003c/p\u003e\n\u003cp\u003eThis release requires Python \u003ccode\u003e3.12-3.14\u003c/code\u003e and NumPy \u003ccode\u003e2.0.0\u003c/code\u003e or greater.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSciPy now supports three different build modes for BLAS and LAPACK\nLP64/ILP64 support, and machinery is provided for downstream \u003ccode\u003ecython_lapack\u003c/code\u003e\nconsumers to gracefully handle LP64/ILP64 backend builds. ILP64 support\nhas been substantially improved across the SciPy library.\u003c/li\u003e\n\u003cli\u003eRemaining Fortran to C translations have been completed---an experimental\nFortran-free build option is now available to developers for testing\npurposes. Developer feedback is welcome on Fortran-free builds.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003escipy.signal.whittaker_henderson\u003c/code\u003e now provides access to Whittaker-Henderson\nsmoothing of a discrete signal.\u003c/li\u003e\n\u003cli\u003eA large number of \u003ccode\u003escipy.stats\u003c/code\u003e functions now support lazy arrays and JAX\nJIT. Array API support has been improved substantially in SciPy, with at least\n21 functions gaining new support in this release. 16 \u003ccode\u003escipy.stats\u003c/code\u003e functions\nhave also gained support for MArray input.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eNew features\u003c/h1\u003e\n\u003ch1\u003e\u003ccode\u003escipy.fft\u003c/code\u003e improvements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSciPy's internal FFT backend has switched from \u003ccode\u003epocketfft\u003c/code\u003e to its\nsuccessor package \u003ccode\u003educc0.fft\u003c/code\u003e, which features several incremental\nimprovements. The most significant of those from SciPy's perspective is\nprobably that storage requirements for internally cached plans have been\nsignificantly reduced for most long 1D transforms. Plans that require more\nstorage than 1MB will no longer be cached; this mainly affects huge 1D\ntransforms of prime and near-prime sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ccode\u003escipy.interpolate\u003c/code\u003e improvements\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/54ef5423f2e4376230ec3bfda6912a07a50958e3\"\u003e\u003ccode\u003e54ef542\u003c/code\u003e\u003c/a\u003e REL: 1.18.0 release commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/a45e463116d16e9c3fbbd0f136eb73682f06936e\"\u003e\u003ccode\u003ea45e463\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25395\"\u003e#25395\u003c/a\u003e from tylerjereddy/treddy_prep_1.18.0_final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/ee2442ea91ea166617d69854e43c40ee06ef1e95\"\u003e\u003ccode\u003eee2442e\u003c/code\u003e\u003c/a\u003e TYP, MAINT, TST: PR 25395 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/3225154c1be61f3c57f86e60ccfe24ea8ce9f75f\"\u003e\u003ccode\u003e3225154\u003c/code\u003e\u003c/a\u003e DOC: PR 25395 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/14c7bd7c8dac58c48d0a462643668b9e513741f0\"\u003e\u003ccode\u003e14c7bd7\u003c/code\u003e\u003c/a\u003e TYP: Fix mypy errors with \u003ccode\u003epytest==9.1.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25410\"\u003e#25410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/71522e9af4ac66827fd345c38d46d62280ad0481\"\u003e\u003ccode\u003e71522e9\u003c/code\u003e\u003c/a\u003e DOC: revise SciPy 1.18.0 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/92f8482d9ab62e275e57af3759a687a2cfcb7a1b\"\u003e\u003ccode\u003e92f8482\u003c/code\u003e\u003c/a\u003e MAINT: fix errors from pytest 9.1 (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25378\"\u003e#25378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/7b27bf432b59e39def05cad0f0a41644de76b2cd\"\u003e\u003ccode\u003e7b27bf4\u003c/code\u003e\u003c/a\u003e TST, MAINT: modernize spatial tests for pytest 10 (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25376\"\u003e#25376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/d05b640b572d281d8af49858617fa05a341a50d3\"\u003e\u003ccode\u003ed05b640\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/25347\"\u003e#25347\u003c/a\u003e from tylerjereddy/treddy_version_bump_1.18.0rc3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/e60fe8b1b49f98b10f67880eef16c5790ca3c9b9\"\u003e\u003ccode\u003ee60fe8b\u003c/code\u003e\u003c/a\u003e REL: set to 1.18.0rc3 unreleased\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy/compare/v1.17.1...v1.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.8.0 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release adds \u003ca href=\"https://narwhals-dev.github.io/narwhals/\"\u003enarwhals\u003c/a\u003e as a new dependency that will help to improve dataframe interoperability across the project.\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/77def0ed6e3beab57244885d2a584470e96c103d\"\u003e\u003ccode\u003e77def0e\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ee7c0b0e34ffe0f5eff8c7aeda49783f70bd9faa\"\u003e\u003ccode\u003eee7c0b0\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/3d7fb048fc5f05555a202d2b24307628841904b5\"\u003e\u003ccode\u003e3d7fb04\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8954e7baf1f827320b17817f0ab76d025f5e6421\"\u003e\u003ccode\u003e8954e7b\u003c/code\u003e\u003c/a\u003e DOC Release highlights for 1.9 (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34147\"\u003e#34147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73a3eab9d7bc58b695e4da8765044815b90b8dee\"\u003e\u003ccode\u003e73a3eab\u003c/code\u003e\u003c/a\u003e Fix: Array-API - avoid failing for numpy fit + predict with sparse or array-l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8839aaeb2fa2a4e3ad2f0a5a69b5f427cffe1dd1\"\u003e\u003ccode\u003e8839aae\u003c/code\u003e\u003c/a\u003e DOC Thread-safety requirement for open_listener message consumer callback (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/4d2476a4e2acc9429b96d8ee80218a96d24c2bde\"\u003e\u003ccode\u003e4d2476a\u003c/code\u003e\u003c/a\u003e DOC Refactor array API docs page (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34054\"\u003e#34054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f9f812fe6a4ea54c482da6b195773917b636365e\"\u003e\u003ccode\u003ef9f812f\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d779dc335a31d74ef472003d9012066f07ee8834\"\u003e\u003ccode\u003ed779dc3\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/6a03cf0906987ce77b37e780ccdebbe3f85e9235\"\u003e\u003ccode\u003e6a03cf0\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.8.0...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `shap` from 0.44.1 to 0.52.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/shap/shap/releases\"\u003eshap's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.52.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNative bindings rewritten with \u003cstrong\u003enanobind\u003c/strong\u003e, and the build system migrated\nfrom \u003ccode\u003esetup.py\u003c/code\u003e to \u003cstrong\u003escikit-build-core + CMake\u003c/strong\u003e. The Cython\n\u003ccode\u003e_kernel_lib.pyx\u003c/code\u003e and the existing \u003ccode\u003e_cext\u003c/code\u003e / \u003ccode\u003e_cext_gpu\u003c/code\u003e modules are now\nbuilt as nanobind extensions, and \u003ccode\u003eMANIFEST.in\u003c/code\u003e / \u003ccode\u003esetup.py\u003c/code\u003e have been\nremoved in favor of a \u003ccode\u003epyproject.toml\u003c/code\u003e-driven build. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4366\"\u003e#4366\u003c/a\u003e, by\n\u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/daidahao\"\u003e\u003ccode\u003e@​daidahao\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/claude\"\u003e\u003ccode\u003e@​claude\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinimum dependency versions raised to follow SPEC 0. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4310\"\u003e#4310\u003c/a\u003e, by \u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLog an \u003ccode\u003eINFO\u003c/code\u003e message when background data is sub-sampled (closes \u003ca href=\"https://redirect.github.com/shap/shap/issues/3461\"\u003e#3461\u003c/a\u003e).\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4294\"\u003e#4294\u003c/a\u003e, by \u003ca href=\"https://github.com/Ebube22\"\u003e\u003ccode\u003e@​Ebube22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd cross-links between the API Reference and API Examples pages.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4329\"\u003e#4329\u003c/a\u003e, by \u003ca href=\"https://github.com/Abhishek9639\"\u003e\u003ccode\u003e@​Abhishek9639\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop the unused \u003ccode\u003etyping-extensions\u003c/code\u003e dependency. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4629\"\u003e#4629\u003c/a\u003e, by \u003ca href=\"https://github.com/samudraneel05\"\u003e\u003ccode\u003e@​samudraneel05\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove GPU TreeExplainer parity: preserve XGBoost default/missing child\nrouting so NaN values follow the same branch as the source model, preserve\nvector-valued XGBoost \u003ccode\u003ebase_score\u003c/code\u003e values (fixing multiclass additivity\noffsets), and tighten categorical handling so sklearn models with\n\u003ccode\u003eenable_categorical=True\u003c/code\u003e raise the existing unsupported-categorical error\neven when the booster does not expose \u003ccode\u003efeature_types\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4997\"\u003e#4997\u003c/a\u003e, by\n\u003ca href=\"https://github.com/RAMitchell\"\u003e\u003ccode\u003e@​RAMitchell\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreeExplainer no longer crashes with pandas nullable dtypes.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4298\"\u003e#4298\u003c/a\u003e, by \u003ca href=\"https://github.com/tudstudent\"\u003e\u003ccode\u003e@​tudstudent\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eNameError\u003c/code\u003e when \u003ccode\u003ewith_binary=False\u003c/code\u003e and \u003ccode\u003ewith_cuda=True\u003c/code\u003e by\ninitializing \u003ccode\u003ecompile_args\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4322\"\u003e#4322\u003c/a\u003e, by \u003ca href=\"https://github.com/mohityadav8\"\u003e\u003ccode\u003e@​mohityadav8\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eText plot colors render correctly by converting NumPy types to float.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4332\"\u003e#4332\u003c/a\u003e, by \u003ca href=\"https://github.com/Saloni-0465\"\u003e\u003ccode\u003e@​Saloni-0465\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAssign the result of \u003ccode\u003enp.flipud\u003c/code\u003e so it is no longer a no-op in\n\u003ccode\u003eAdditiveForceArrayVisualizer\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4343\"\u003e#4343\u003c/a\u003e, by \u003ca href=\"https://github.com/Mahaveerjain-18\"\u003e\u003ccode\u003e@​Mahaveerjain-18\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eisinstance()\u003c/code\u003e instead of \u003ccode\u003eis\u003c/code\u003e for type checks. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4373\"\u003e#4373\u003c/a\u003e, by \u003ca href=\"https://github.com/divyam-jha123\"\u003e\u003ccode\u003e@​divyam-jha123\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003e'sample'\u003c/code\u003e in \u003ccode\u003eExplanation.op_history\u003c/code\u003e instead of \u003ccode\u003e'__getitem__'\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4376\"\u003e#4376\u003c/a\u003e, by \u003ca href=\"https://github.com/tarun-227\"\u003e\u003ccode\u003e@​tarun-227\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove the unreachable large-dataset warning into the interventional branch.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4392\"\u003e#4392\u003c/a\u003e, by \u003ca href=\"https://github.com/Mahaveerjain-18\"\u003e\u003ccode\u003e@​Mahaveerjain-18\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u0026quot;structure of inputs doesn't match the expected structure\u0026quot;.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4410\"\u003e#4410\u003c/a\u003e, by \u003ca href=\"https://github.com/shaivimalik\"\u003e\u003ccode\u003e@​shaivimalik\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the return value from \u003ccode\u003eis_color_map()\u003c/code\u003e in \u003ccode\u003eplots/_beeswarm.py\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/shap/shap/issues/4421\"\u003e#4421\u003c/a\u003e, by \u003ca href=\"https://github.com/maniktyagi04\"\u003e\u003ccode\u003e@​maniktyagi04\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuppress the \u003ccode\u003eUserWarning\u003c/code\u003e when \u003ccode\u003eLGBMRegressor\u003c/code\u003e was fitted with feature\nnames. (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4422\"\u003e#4422\u003c/a\u003e, by \u003ca href=\"https://github.com/shaivimalik\"\u003e\u003ccode\u003e@​shaivimalik\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/shap/shap/commit/8461059bd4e5db2d5d401472ef871c5d411984fe\"\u003e\u003ccode\u003e8461059\u003c/code\u003e\u003c/a\u003e FIX: Improve GPU TreeExplainer parity (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4997\"\u003e#4997\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/8549e6bc3516f71480f0c147265cf5577e4f7a6b\"\u003e\u003ccode\u003e8549e6b\u003c/code\u003e\u003c/a\u003e fix: use isinstance() instead of type() is tuple checks (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4508\"\u003e#4508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/3be70014c904649286a4211a2cb7155fcb79d89e\"\u003e\u003ccode\u003e3be7001\u003c/code\u003e\u003c/a\u003e remove webpack dependency for sickness scores (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5018\"\u003e#5018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/6e9f9b8563fb63c37ae4f7a2af308444857cb20c\"\u003e\u003ccode\u003e6e9f9b8\u003c/code\u003e\u003c/a\u003e build(deps): bump qs and express in /javascript (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5015\"\u003e#5015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/9be5435bb8523eba406147e8dcf3186008818bff\"\u003e\u003ccode\u003e9be5435\u003c/code\u003e\u003c/a\u003e build(deps): bump idna from 3.11 to 3.15 in /docs (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5007\"\u003e#5007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/52dd763bd36603c39ce3a4fc68e7fd805380706e\"\u003e\u003ccode\u003e52dd763\u003c/code\u003e\u003c/a\u003e pin torch to \u0026lt;=2.11.0 in pyproject.toml (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5017\"\u003e#5017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/d8f2e7656017d5f39e6c026852d1eb6caa2dc711\"\u003e\u003ccode\u003ed8f2e76\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump webpack-dev-server in /javascript (\u003ca href=\"https://redirect.github.com/shap/shap/issues/5009\"\u003e#5009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/ac6e677d627d5458395e5a2925a3ff3297fafd7a\"\u003e\u003ccode\u003eac6e677\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump \u003ccode\u003e@​babel/plugin-transform-modules-systemjs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4991\"\u003e#4991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/679b2eefb00a96ac9b2741103baec27206b26154\"\u003e\u003ccode\u003e679b2ee\u003c/code\u003e\u003c/a\u003e FIX: warn when covariance matrix is singular in LinearExplainer (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4471\"\u003e#4471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shap/shap/commit/ce4abd76933cac06e1cedbd75bd8fcfc74238318\"\u003e\u003ccode\u003ece4abd7\u003c/code\u003e\u003c/a\u003e build(deps): bump mistune from 3.2.0 to 3.2.1 (\u003ca href=\"https://redirect.github.com/shap/shap/issues/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shap/shap/compare/v0.44.1...v0.52.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tqdm` from 4.67.3 to 4.68.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tqdm/tqdm/releases\"\u003etqdm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etqdm v4.68.3 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eutils\u003c/code\u003e: delay \u003ccode\u003eos.get_terminal_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1763\"\u003e#1763\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eautonotebook\u003c/code\u003e: support QtConsole, Spyder, JupyterLite (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1763\"\u003e#1763\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1628\"\u003e#1628\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1559\"\u003e#1559\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1283\"\u003e#1283\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1098\"\u003e#1098\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/512\"\u003e#512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eminor docs updates\n\u003cul\u003e\n\u003cli\u003efix typo (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1762\"\u003e#1762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse \u003ccode\u003egit-fame\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003emisc minor framework updates\n\u003cul\u003e\n\u003cli\u003efix \u0026amp; update CI build\u003c/li\u003e\n\u003cli\u003epre-commit: add docs \u0026amp; metadata generation\u003c/li\u003e\n\u003cli\u003emove \u003ccode\u003etox.ini\u003c/code\u003e -\u0026gt; \u003ccode\u003epyproject.toml\u003c/code\u003e, move \u003ccode\u003etox-gh-actions\u003c/code\u003e -\u0026gt; \u003ccode\u003etox-gh\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd Python 3.14, drop 3.7 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.68.2 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erevert accidental change to \u003ccode\u003eascii\u003c/code\u003e default (fixes \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eUnicodeEncodeError: 'charmap' codec can't encode characters in position 6-7: character maps to \u0026lt;undefined\u0026gt;\u003c/code\u003e can be fixed by installing \u003ccode\u003etqdm!=4.68.0,!=4.68.1\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003emisc docs updates\n\u003cul\u003e\n\u003cli\u003efix links\u003c/li\u003e\n\u003cli\u003ereplace stray \u003ccode\u003erst\u003c/code\u003e -\u0026gt; \u003ccode\u003emd\u003c/code\u003e syntax\u003c/li\u003e\n\u003cli\u003econsistent \u0026quot;progress bar\u0026quot; terminology (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1737\"\u003e#1737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003etests: fix coverage (fixes \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.68.1 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eset name of monitor thread (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1669\"\u003e#1669\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1752\"\u003e#1752\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix monitor thread \u003ccode\u003eatexit\u003c/code\u003e deadlock (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1751\"\u003e#1751\u003c/a\u003e \u0026lt;- \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/528\"\u003e#528\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/627\"\u003e#627\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1435\"\u003e#1435\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1564\"\u003e#1564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: minor copyediting\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etqdm v4.68.0 stable\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eutils\u003c/code\u003e: simplify terminal size detection (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtrib\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eitertools\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1760\"\u003e#1760\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003echain\u003c/code\u003e, \u003ccode\u003epermutations\u003c/code\u003e, \u003ccode\u003ecombinations\u003c/code\u003e, \u003ccode\u003ecombinations_with_replacement\u003c/code\u003e, \u003ccode\u003ebatched\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eproduct(repeat=1)\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1428\"\u003e#1428\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003ediscord\u003c/code\u003e, \u003ccode\u003etelegram\u003c/code\u003e error handling\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003ediscord\u003c/code\u003e, \u003ccode\u003eslack\u003c/code\u003e, \u003ccode\u003etelegram\u003c/code\u003e format for \u003ccode\u003etotal=None\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003esoft-deprecate \u003ccode\u003etqdm.utils.envwrap\u003c/code\u003e -\u0026gt; \u003ca href=\"https://github.com/tqdm/envwrap\"\u003e\u003ccode\u003eenvwrap\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebenchmarks: fix \u003ccode\u003easv\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emisc linting\u003c/li\u003e\n\u003cli\u003emisc framework updates\n\u003cul\u003e\n\u003cli\u003eCI: migrate manual job to \u003ccode\u003epre-commit.ci\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebump workflow actions \u0026amp; pre-commit hooks\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/9aff6090b6fa98c88a2dbff8bd9e2a68d9a99c1b\"\u003e\u003ccode\u003e9aff609\u003c/code\u003e\u003c/a\u003e bump version, merge pull request \u003ca href=\"https://redirect.github.com/tqdm/tqdm/issues/1763\"\u003e#1763\u003c/a\u003e from tqdm/jupyterlite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/9872f80e0d9ceb8377b45c714ec8f6ae66bf9ef9\"\u003e\u003ccode\u003e9872f80\u003c/code\u003e\u003c/a\u003e drop date from snap version str to fix pydantic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/b82933405f6dc19dd8f667be57fd2058a00f75c7\"\u003e\u003ccode\u003eb829334\u003c/code\u003e\u003c/a\u003e support QtConsole, Spyder, JupyterLite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/6fa4867b27dd4852204aa13f73300db41791cd46\"\u003e\u003ccode\u003e6fa4867\u003c/code\u003e\u003c/a\u003e delay os.get_terminal_size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/748e107287c9a66e3a366cd5366bd9a8bcbe33ae\"\u003e\u003ccode\u003e748e107\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/e6e29eb7a191d366d21b93817c6de3857b664367\"\u003e\u003ccode\u003ee6e29eb\u003c/code\u003e\u003c/a\u003e move tox.ini -\u0026gt; pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/617e4faf67d6cc59d42e3b2665b0c1199a665db4\"\u003e\u003ccode\u003e617e4fa\u003c/code\u003e\u003c/a\u003e tox-gh-actions -\u0026gt; tox-gh\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/c49c50d83124e514d2b6bb549661ff1e2fa44504\"\u003e\u003ccode\u003ec49c50d\u003c/code\u003e\u003c/a\u003e add python 3.14, drop python 3.7 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/fa2bcdb4ad68d4e95bd49460d8d590451cf478ba\"\u003e\u003ccode\u003efa2bcdb\u003c/code\u003e\u003c/a\u003e pre-commit: tqdm.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tqdm/tqdm/commit/1ec798811a960294d74d42d35b6614e3273e9fe3\"\u003e\u003ccode\u003e1ec7988\u003c/code\u003e\u003c/a\u003e auto git-fame\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tqdm/tqdm/compare/v4.67.3...v4.68.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.9 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.0\u003c/h2\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. \u003ca href=\"https://matplotlib.org/3.11.0/release/prev_whats_new/whats_new_3.11.0.html\"\u003eSee the release notes for more information\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc2\u003c/h2\u003e\n\u003cp\u003eThis is the second release candidate for the meso release 3.11.0.\u003c/p\u003e\n\u003cp\u003eThis release candidate fixes some problems with downstream packages, removes some missed deprecations, and corrects some additional minor bugs.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc1\u003c/h2\u003e\n\u003cp\u003eAfter an extended development stretch, we are pleased to announce the first release candidate of Matplotlib 3.11.0.\u003c/p\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner. Due to the update to the font rendering stack, we cannot guarantee that text will be bit-for-bit perfect with previous releases, so if you are using Matplotlib for testing, it may be necessary to introduce/raise a tolerance within your tests.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. Final release notes are still being curated, but you may browse \u003ca href=\"https://matplotlib.org/3.11.0/release/next_whats_new\"\u003ethe list of new features\u003c/a\u003e, \u003ca href=\"https://matplotlib.org/3.11.0/api/next_api_changes.html\"\u003eAPI changes\u003c/a\u003e, and \u003ca href=\"https://github.com/matplotlib/matplotlib/milestone/96?closed=1https://github.com/matplotlib/matplotlib/milestone/96?closed=1\"\u003eall issues/pull requests on the milestone\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a note for downstream packagers, the font libraries have only been tested against the versions bundled with the wheels. It may be possible to expand the range of requirements, or that a requirement is too broad. Please report any issues you have building against external dependencies.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/69c7534c7b45119dd9d33d1c32a7ff4c48d8080f\"\u003e\u003ccode\u003e69c7534\u003c/code\u003e\u003c/a\u003e REL: v3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b7d912b2c53fa2cebfcbfe2cf6bd74ebd5b79f46\"\u003e\u003ccode\u003eb7d912b\u003c/code\u003e\u003c/a\u003e DOC: Set 3.11 as preferred stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/7c3d5022d7e668340acb8cb7cccb779abbef39f9\"\u003e\u003ccode\u003e7c3d502\u003c/code\u003e\u003c/a\u003e Update Security Policy for 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/964e73d9568e943d60e9db966bc759407a231290\"\u003e\u003ccode\u003e964e73d\u003c/code\u003e\u003c/a\u003e DOC: Prepare GitHub stats for 3.11 final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/bfa26331e32d7934f80cdd4882b9c5d06bb4770e\"\u003e\u003ccode\u003ebfa2633\u003c/code\u003e\u003c/a\u003e Bump font manager version to final release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0603b29671010fb05c3e56a6b072b352968c397\"\u003e\u003ccode\u003ed0603b2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31873\"\u003e#31873\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31706-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/edf5ebc1200f88f7340e3a96972abe9c66c97835\"\u003e\u003ccode\u003eedf5ebc\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31706\"\u003e#31706\u003c/a\u003e: Fix clabel manual index\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/c0e80b7e2ed1a4516604aa5bb432e2de032759c7\"\u003e\u003ccode\u003ec0e80b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31872\"\u003e#31872\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31868-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2a148549a9949a5ca710e04d2572001e33f43762\"\u003e\u003ccode\u003e2a14854\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31868\"\u003e#31868\u003c/a\u003e: DOC: Move errorbar examples to the statistics sections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/ea43d96dc2157beec49e64fb4a60647ba004644f\"\u003e\u003ccode\u003eea43d96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31871\"\u003e#31871\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31870-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.9...v3.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be ab...\n\n_Description has been truncated_","html_url":"https://github.com/jbInf-08/biomarker_identifier/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbInf-08%2Fbiomarker_identifier/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"}},{"old_version":"\u003c3.0,\u003e=2.0.50","new_version":"\u003e=2.0.51,\u003c3.0","update_type":"patch","path":null,"pr_created_at":"2026-06-19T01:14:35.000Z","version_change":"\u003c3.0,\u003e=2.0.50 → \u003e=2.0.51,\u003c3.0","issue":{"uuid":"4697090146","node_id":"PR_kwDOPmzXZM7oL0qQ","number":333,"state":"closed","title":"chore(deps): update sqlalchemy requirement from \u003c3.0,\u003e=2.0.50 to \u003e=2.0.51,\u003c3.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-27T01:19:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-19T01:14:35.000Z","updated_at":"2026-06-27T01:19:52.000Z","time_to_close":691516,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"sqlalchemy","old_version":"\u003c3.0,\u003e=2.0.50","new_version":"\u003e=2.0.51,\u003c3.0","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\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/bethington/ghidra-mcp/pull/333","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bethington%2Fghidra-mcp/issues/333","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/333/packages"}},{"old_version":"\u003e=2.0.0","new_version":"\u003e=2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-18T00:37:59.000Z","version_change":"\u003e=2.0.0 → \u003e=2.0.51","issue":{"uuid":"4688145472","node_id":"PR_kwDOS92DOc7nuWMs","number":15,"state":"open","title":"deps(deps): update sqlalchemy requirement from \u003e=2.0.0 to \u003e=2.0.51","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-18T00:37:59.000Z","updated_at":"2026-06-18T00:38:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): update","packages":[{"name":"sqlalchemy","old_version":"\u003e=2.0.0","new_version":"\u003e=2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\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/ichhitmahajan/ig/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ichhitmahajan%2Fig/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"2.0.49","new_version":"2.0.51","update_type":"patch","path":"/apps/api","pr_created_at":"2026-06-17T01:05:32.000Z","version_change":"2.0.49 → 2.0.51","issue":{"uuid":"4679091194","node_id":"PR_kwDOP0TLGM7nQd8c","number":508,"state":"open","title":"chore(api-deps): bump sqlalchemy from 2.0.49 to 2.0.51 in /apps/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":"2026-06-17T01:05:32.000Z","updated_at":"2026-06-17T01:08:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(api-deps)","packages":[{"name":"sqlalchemy","old_version":"2.0.49","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/apps/api","ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.49 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.49\u0026new-version=2.0.51)](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/Menschlichkeit-Osterreich/menschlichkeit-oesterreich/pull/508","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Menschlichkeit-Osterreich%2Fmenschlichkeit-oesterreich/issues/508","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/508/packages"}},{"old_version":"2.0.50","new_version":"2.0.51","update_type":"patch","path":"/backend","pr_created_at":"2026-06-16T11:34:18.000Z","version_change":"2.0.50 → 2.0.51","issue":{"uuid":"4673758130","node_id":"PR_kwDORlzcxM7m-xu3","number":270,"state":"open","title":"build(deps): Bump sqlalchemy from 2.0.50 to 2.0.51 in /backend","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-16T11:34:18.000Z","updated_at":"2026-06-19T06:43:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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","html_url":"https://github.com/ale-sanchez-g/open-prompt-manager/pull/270","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ale-sanchez-g%2Fopen-prompt-manager/issues/270","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/270/packages"}},{"old_version":"2.0.50","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-16T03:02:39.000Z","version_change":"2.0.50 → 2.0.51","issue":{"uuid":"4670664383","node_id":"PR_kwDOEa4COM7m0sZp","number":107,"state":"open","title":"Bump sqlalchemy from 2.0.50 to 2.0.51","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["tiksn"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-06-16T03:02:39.000Z","updated_at":"2026-06-16T03:04:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.50\u0026new-version=2.0.51)](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/tiksn/emote/pull/107","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiksn%2Femote/issues/107","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/107/packages"}},{"old_version":"2.0.50","new_version":"2.0.51","update_type":"patch","path":null,"pr_created_at":"2026-06-16T02:04:01.000Z","version_change":"2.0.50 → 2.0.51","issue":{"uuid":"4670378256","node_id":"PR_kwDOLvCgVM7mzxOa","number":488,"state":"closed","title":"Bump sqlalchemy from 2.0.50 to 2.0.51","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-16T02:04:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-16T02:04:01.000Z","updated_at":"2026-06-16T02:04:25.000Z","time_to_close":17,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sqlalchemy","old_version":"2.0.50","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.50 to 2.0.51.\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.51\u003c/h1\u003e\n\u003cp\u003eReleased: June 15, 2026\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 \u003ccode\u003e_orm.subqueryload()\u003c/code\u003e combined with\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e and \u003ccode\u003ePropComparator.and_()\u003c/code\u003e would\nsilently drop the additional filter criteria, causing all related objects\nto be loaded instead of only those matching the filter.  The\n\u003ccode\u003eLoaderCriteriaOption\u003c/code\u003e was being constructed against the base\nentity rather than the effective entity indicated by\n\u003ccode\u003ePropComparator.of_type()\u003c/code\u003e.  Pull request courtesy Arya Rizky.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13207\"\u003e#13207\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failure during \u003ccode\u003etpc_prepare()\u003c/code\u003e within\n\u003ccode\u003e_orm.Session.commit()\u003c/code\u003e for a two-phase session would raise\n\u003ccode\u003eIllegalStateChangeError\u003c/code\u003e instead of the original database\nexception.  The internal \u003ccode\u003e_prepare_impl()\u003c/code\u003e method's error handler\nwas unable to invoke \u003ccode\u003e_orm.SessionTransaction.rollback()\u003c/code\u003e due\nto a state-change guard, preventing proper cleanup and masking the\nunderlying error.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13356\"\u003e#13356\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] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003eResult.freeze()\u003c/code\u003e would lose track of ambiguous\ncolumn names present in the original \u003ccode\u003eCursorResult\u003c/code\u003e, causing\nkey-based access on the thawed result to silently return a value instead of\nraising \u003ccode\u003eInvalidRequestError\u003c/code\u003e.  The\n\u003ccode\u003eSimpleResultMetaData\u003c/code\u003e now accepts and propagates ambiguous key\ninformation so that frozen, thawed, and pickled results raise consistently\nfor duplicate column names.  Pull request courtesy Saurabh Kohli.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/9427\"\u003e#9427\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_sql.StatementLambdaElement\u003c/code\u003e would proxy\nattribute access through the cached \u0026quot;expected\u0026quot; expression rather than the\nresolved expression, causing stale closure-bound parameter values to be\nused when a lambda statement was extended with non-lambda criteria such as\nan additional \u003ccode\u003e.where()\u003c/code\u003e clause.  Courtesy cjc0013.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/10827\"\u003e#10827\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\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\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlalchemy\u0026package-manager=pip\u0026previous-version=2.0.50\u0026new-version=2.0.51)](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/Fulastiklassen/Baamshop/pull/488","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fulastiklassen%2FBaamshop/issues/488","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/488/packages"}}]}