{"id":17305,"name":"testcontainers","ecosystem":"pip","repository_url":"https://github.com/testcontainers/testcontainers-python","issues_count":177,"created_at":"2025-06-07T00:46:21.061Z","updated_at":"2025-06-07T00:46:21.061Z","purl":"pkg:pypi/testcontainers","metadata":{"id":2943131,"name":"testcontainers","ecosystem":"pypi","description":"Python library for throwaway instances of anything that can run in a Docker container","homepage":null,"licenses":"Apache Software License","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/testcontainers/testcontainers-python","keywords_array":["testing","logging","docker","test automation"],"namespace":null,"versions_count":58,"first_release_published_at":"2016-08-21T17:09:09.000Z","latest_release_published_at":"2025-04-02T16:13:25.000Z","latest_release_number":"4.10.0","last_synced_at":"2025-06-07T04:31:00.605Z","created_at":"2022-04-10T12:48:42.729Z","updated_at":"2025-06-07T04:31:00.606Z","registry_url":"https://pypi.org/project/testcontainers/","install_command":"pip install testcontainers --index-url https://pypi.org/simple","documentation_url":"https://testcontainers.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Intended Audience :: Developers","Intended Audience :: Information Technology","License :: OSI Approved :: Apache Software License","Operating System :: MacOS","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Operating System :: Unix","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"testcontainers"},"repo_metadata":{"id":37896537,"uuid":"85802819","full_name":"testcontainers/testcontainers-python","owner":"testcontainers","description":"Testcontainers is a Python library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests.","archived":false,"fork":false,"pushed_at":"2025-05-05T15:12:44.000Z","size":2068,"stargazers_count":1802,"open_issues_count":136,"forks_count":312,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-05-26T09:15:03.094Z","etag":null,"topics":["database","python","python3","selenium","testcontainers","testing"],"latest_commit_sha":null,"homepage":"https://testcontainers-python.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/testcontainers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-03-22T08:22:35.000Z","updated_at":"2025-05-25T22:36:50.000Z","dependencies_parsed_at":"2024-01-06T18:27:36.559Z","dependency_job_id":"d02e7934-71a6-4dc6-9f74-00d87ac152b7","html_url":"https://github.com/testcontainers/testcontainers-python","commit_stats":{"total_commits":805,"total_committers":137,"mean_commits":5.875912408759124,"dds":0.7987577639751553,"last_synced_commit":"85d6078f9bcc99050c0173e459208402aa4f5026"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/testcontainers","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257428842,"owners_count":22545130,"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":"testcontainers","name":"testcontainers","uuid":"13393021","kind":"organization","description":"","email":null,"website":"https://testcontainers.com","location":null,"twitter":"testcontainers","company":null,"icon_url":"https://avatars.githubusercontent.com/u/13393021?v=4","repositories_count":68,"last_synced_at":"2025-05-30T05:15:33.587Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/testcontainers","funding_links":["https://github.com/sponsors/testcontainers"],"total_stars":23731,"followers":1755,"following":0,"created_at":"2022-11-02T16:35:18.513Z","updated_at":"2025-05-30T05:15:33.587Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/testcontainers","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/testcontainers/repositories"},"tags":[{"name":"testcontainers-v4.10.0","sha":"46feb1ed777230796f41d08e6b95d6d2f406b093","kind":"commit","published_at":"2025-04-02T16:12:25.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.10.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.10.0/manifests"},{"name":"testcontainers-v4.9.2","sha":"a0785d7c63a454184fcfbdb224f189cea8d680aa","kind":"commit","published_at":"2025-03-05T13:54:49.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.9.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.9.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.9.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.9.2/manifests"},{"name":"testcontainers-v4.9.1","sha":"9317736c34cbe23844006c8e49629fc88e142949","kind":"commit","published_at":"2025-01-21T20:15:36.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.9.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.9.1/manifests"},{"name":"testcontainers-v4.9.0","sha":"3436cbfd7530b2168400b941635c8baeafa5cc97","kind":"commit","published_at":"2024-12-10T17:24:43.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.9.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.9.0/manifests"},{"name":"testcontainers-v4.8.2","sha":"f7922d70f802aa2f43f5bb32292af5960e725880","kind":"commit","published_at":"2024-10-14T03:49:04.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.8.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.8.2/manifests"},{"name":"testcontainers-v4.8.1","sha":"8c0cdbc67a761277666e9630fe754f2b5560e21f","kind":"commit","published_at":"2024-09-03T09:24:59.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.8.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.8.1/manifests"},{"name":"testcontainers-v4.8.0","sha":"c7d9b814fd0a9ab254b0f7d7f3fe09a76453d2c7","kind":"commit","published_at":"2024-08-14T13:19:41.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.8.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.8.0/manifests"},{"name":"testcontainers-v4.7.2","sha":"068c43113592369af58e354cdd352151244d89a3","kind":"commit","published_at":"2024-07-15T20:01:29.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.7.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.7.2/manifests"},{"name":"testcontainers-v4.7.1","sha":"41fbdd05b1dab13db6ff413893e2c430520fd109","kind":"commit","published_at":"2024-07-02T13:23:20.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.7.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.7.1/manifests"},{"name":"testcontainers-v4.7.0","sha":"a9621474d6b07465a1b83bf28c4b14c1a2fe7f96","kind":"commit","published_at":"2024-06-28T09:24:03.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.7.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.7.0/manifests"},{"name":"testcontainers-v4.6.0","sha":"090bd0d3f09414decc481d9a06d8a62f045d8819","kind":"commit","published_at":"2024-06-20T10:23:05.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.6.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.6.0/manifests"},{"name":"testcontainers-v4.5.1","sha":"a95af7ddab9de5d375031a9071d6a680e47ba981","kind":"commit","published_at":"2024-05-31T09:19:09.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.5.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.5.1/manifests"},{"name":"testcontainers-v4.5.0","sha":"70414dbc536b1c301e61efb5a588e14549a59cf0","kind":"commit","published_at":"2024-05-25T19:36:23.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.5.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.5.0/manifests"},{"name":"testcontainers-v4.4.1","sha":"49b261e0224296680d7ef2faee00e0166178a35e","kind":"commit","published_at":"2024-05-14T07:48:17.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.4.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.4.1/manifests"},{"name":"testcontainers-v4.4.0","sha":"056e48d6a418516a91d37aa4d57fc12442ea0fbc","kind":"commit","published_at":"2024-04-17T10:36:15.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.4.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.4.0/manifests"},{"name":"testcontainers-v4.3.3","sha":"5ccec1755c2c976c2ad01bd558549989708b86a2","kind":"commit","published_at":"2024-04-09T13:53:37.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.3.3","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.3/manifests"},{"name":"testcontainers-v4.3.2","sha":"fe2275879b2a6badb2441f67094607ac9d3dce8a","kind":"commit","published_at":"2024-04-08T09:27:17.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.3.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.2/manifests"},{"name":"testcontainers-v4.3.1","sha":"0fb4aefbed3cfd1085cd8b4c9f176a4058daa525","kind":"commit","published_at":"2024-04-02T20:38:45.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.3.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.1/manifests"},{"name":"testcontainers-v4.3.0","sha":"f819c7a65045e10c5951626d212c2663d8cae5ce","kind":"commit","published_at":"2024-04-01T11:50:56.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.3.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.3.0/manifests"},{"name":"testcontainers-v4.2.0","sha":"e96218907c39c97b57c11c0da22f9550522d42ef","kind":"commit","published_at":"2024-03-24T16:54:07.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.2.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.2.0/manifests"},{"name":"testcontainers-v4.1.0","sha":"c07e99c4edb40cc3faa5c879e14ec526cd13bd46","kind":"commit","published_at":"2024-03-19T15:41:41.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.1.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.1.0/manifests"},{"name":"testcontainers-v4.0.1","sha":"e72a0ebbc41a020a0a288af4edf176f92d733652","kind":"tag","published_at":"2024-03-11T12:03:33.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.0.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.0.1/manifests"},{"name":"testcontainers-v4.0.0","sha":"ed3b9faf46c8e04fef3b4d784b31605cf4189ffd","kind":"commit","published_at":"2024-03-06T16:40:19.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/testcontainers-v4.0.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/testcontainers-v4.0.0/manifests"},{"name":"v3.7.1","sha":"28e3a471c32c1036dd5e37df13cdde3b1ba91000","kind":"commit","published_at":"2022-12-06T16:21:59.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.7.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.7.1/manifests"},{"name":"v3.7.0","sha":"99f4615132b662ef177993fed23f78d2b2b45201","kind":"commit","published_at":"2022-09-21T21:05:01.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.7.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.7.0/manifests"},{"name":"v3.6.1","sha":"95fb5e06314f610fffd52b0c76cd37c70ba356fd","kind":"commit","published_at":"2022-08-15T19:21:30.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.6.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.6.1/manifests"},{"name":"v3.6.0","sha":"99a32525ccd17edcc03a83b7cfcd1fb64f6bfaaa","kind":"commit","published_at":"2022-06-14T19:40:14.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.6.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.6.0/manifests"},{"name":"v3.5.4","sha":"df0c28afef8dc26c0a685b0919d9b9aa65ccc5c2","kind":"commit","published_at":"2022-05-09T14:12:39.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.5.4","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.4/manifests"},{"name":"v3.5.3","sha":"130d89e28f34606e45b2d620225be3b706f65c6e","kind":"commit","published_at":"2022-04-04T22:02:19.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.5.3","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.3/manifests"},{"name":"v3.5.2","sha":"3bd7ae992ade4c0228b2edbc522a510dacb25dab","kind":"commit","published_at":"2022-04-03T16:54:10.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.5.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.2/manifests"},{"name":"v3.5.1","sha":"4a32c88fb8f59cf55c878420904e1215449ddca4","kind":"commit","published_at":"2022-04-03T16:40:38.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.5.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.1/manifests"},{"name":"v3.5.0","sha":"3b8a1b5495236b75a7ed748827b40887700b256d","kind":"commit","published_at":"2022-03-27T20:49:39.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.5.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.5.0/manifests"},{"name":"v3.4.2","sha":"fcbad411fdf4e427772144b63d5bd4cfb6646442","kind":"commit","published_at":"2021-08-15T17:49:30.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.4.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.4.2/manifests"},{"name":"v3.4.1","sha":"50f8d8ca1b031b1a2cf5c594c857fc16cf7d226b","kind":"commit","published_at":"2021-06-03T08:07:40.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.4.1","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.4.1/manifests"},{"name":"v3.4.0","sha":"bc969c53680606d7fff6a2e8350f5a6f234fcd38","kind":"commit","published_at":"2021-03-29T09:25:41.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.4.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.4.0/manifests"},{"name":"v3.3.0","sha":"95ac492c2271203f1f002b19ea199e23c0ef724b","kind":"commit","published_at":"2021-03-06T13:49:03.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.3.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.3.0/manifests"},{"name":"v3.2.0","sha":"7068a45c95a3bd779b4c2f96e0d3b67426e81ad4","kind":"commit","published_at":"2020-12-11T15:01:07.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.2.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.2.0/manifests"},{"name":"v3.1.0","sha":"7d8a9f86b8d6d61421f0ae31f99a6d246acedf0c","kind":"commit","published_at":"2020-08-31T20:33:11.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.1.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.1.0/manifests"},{"name":"v3.0.3","sha":"6564d273f6ce5ec1d36d3070455ca1855dcbec13","kind":"commit","published_at":"2020-06-08T16:55:03.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.0.3","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.0.3/manifests"},{"name":"v3.0.2","sha":"87fb2c14207898fa63cb77a2a2c2beadb7e5357c","kind":"commit","published_at":"2020-05-26T17:28:53.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.0.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.0.2/manifests"},{"name":"v3.0.0","sha":"da4dcc48f78b7e373cc7960b2e6e2451b5944e40","kind":"commit","published_at":"2020-04-28T09:23:09.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v3.0.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v3.0.0/manifests"},{"name":"v2.6.0","sha":"1dc01d3d9dd474f63a2f63fa64ccd4e82a8496cb","kind":"commit","published_at":"2020-02-20T18:08:59.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.6.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.6.0/manifests"},{"name":"v2.6","sha":"53a905b2b8fa5f2aeebad56372c1ed518707e4b7","kind":"commit","published_at":"2019-09-27T11:13:50.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.6","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.6/manifests"},{"name":"v2.5","sha":"46049d06630f4afaac1140bf93f0def8bb4edc46","kind":"commit","published_at":"2019-07-25T18:23:16.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.5","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.5/manifests"},{"name":"v2.3","sha":"5eb9e60b490386ae67490da7eb57d6d98b03f582","kind":"commit","published_at":"2018-08-19T06:55:39.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.3","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.3/manifests"},{"name":"v2.2","sha":"c081c1899dea85a221c27bc849d2ad7abfb4079e","kind":"commit","published_at":"2018-02-25T17:04:27.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.2/manifests"},{"name":"v2.1.2","sha":"af7acc49d5267e98cf8b8c22696de54dc3d7d86f","kind":"commit","published_at":"2018-01-09T09:22:00.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.1.2","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.1.2/manifests"},{"name":"v2.0.0","sha":"dae61ea76e6a12578b58a0e90f8c857eab772bd3","kind":"commit","published_at":"2017-03-28T18:18:34.000Z","download_url":"https://codeload.github.com/testcontainers/testcontainers-python/tar.gz/v2.0.0","html_url":"https://github.com/testcontainers/testcontainers-python/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/testcontainers%2Ftestcontainers-python/tags/v2.0.0/manifests"}]},"repo_metadata_updated_at":"2025-06-02T09:03:20.854Z","dependent_packages_count":44,"downloads":3525518,"downloads_period":"last-month","dependent_repos_count":385,"rankings":{"downloads":0.3351970737828144,"dependent_repos_count":0.7419279072659196,"dependent_packages_count":0.3684596924437147,"stargazers_count":2.062950382214257,"forks_count":3.5195192351324533,"docker_downloads_count":0.7969951821068858,"average":1.3041749121576742},"purl":"pkg:pypi/testcontainers","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/testcontainers","docker_dependents_count":20,"docker_downloads_count":1887518,"usage_url":"https://repos.ecosyste.ms/usage/pypi/testcontainers","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/testcontainers/dependencies","status":null,"funding_links":["https://github.com/sponsors/testcontainers"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/testcontainers/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/testcontainers/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/testcontainers/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/testcontainers/related_packages","maintainers":[{"uuid":"SergeyPirogov","login":"SergeyPirogov","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/SergeyPirogov/","role":null,"created_at":"2022-12-20T19:37:48.797Z","updated_at":"2022-12-20T19:37:48.797Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/SergeyPirogov/packages"},{"uuid":"tillahoffmann","login":"tillahoffmann","name":null,"email":null,"url":null,"packages_count":49,"html_url":"https://pypi.org/user/tillahoffmann/","role":null,"created_at":"2022-12-20T19:37:48.826Z","updated_at":"2022-12-20T19:37:48.826Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/tillahoffmann/packages"},{"uuid":"daveankin","login":"daveankin","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/daveankin/","role":null,"created_at":"2024-01-15T20:53:59.391Z","updated_at":"2024-01-15T20:53:59.391Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/daveankin/packages"},{"uuid":"kiview","login":"kiview","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/kiview/","role":null,"created_at":"2024-01-15T20:53:59.537Z","updated_at":"2024-01-15T20:53:59.537Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/kiview/packages"},{"uuid":"totallyzen","login":"totallyzen","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/totallyzen/","role":null,"created_at":"2024-03-01T03:25:39.497Z","updated_at":"2024-03-01T03:25:39.497Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/totallyzen/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690445,"maintainers_count":292827,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":79,"unique_repositories_count_past_30_days":2,"recent_issues":[{"uuid":"4586269463","node_id":"PR_kwDOSWpz3M7ijPy4","number":79,"state":"closed","title":"chore(deps): update testcontainers requirement from \u003e=4.0.0 to \u003e=4.14.2","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-04T06:19:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-04T06:04:31.000Z","updated_at":"2026-06-04T06:20:01.000Z","time_to_close":928,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.0.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.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 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/PaynePew/qr_code_generator/pull/79","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PaynePew%2Fqr_code_generator/issues/79","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/79/packages"},{"uuid":"4543724430","node_id":"PR_kwDOJLUvb87gZtcz","number":3346,"state":"closed","title":"chore(deps): update testcontainers requirement from \u003c5.0,\u003e=3.7.0 to \u003e=4.14.2,\u003c5.0 in /bdd/python","user":"dependabot[bot]","labels":["dependencies","python","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-28T21:15:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-28T20:50:52.000Z","updated_at":"2026-05-28T21:15:33.000Z","time_to_close":1470,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"testcontainers","old_version":"\u003c5.0,\u003e=3.7.0","new_version":"\u003e=4.14.2,\u003c5.0","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":"/bdd/python","ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/apache/iggy/pull/3346","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Figgy/issues/3346","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3346/packages"},{"uuid":"4473973386","node_id":"PR_kwDOSAObtM7c5Q9l","number":13,"state":"closed","title":"chore(deps): bump the minor-patch group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-06-20T20:45:28.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T02:37:09.000Z","updated_at":"2026-06-20T20:45:35.000Z","time_to_close":2830099,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-patch","update_count":21,"packages":[{"name":"fastapi","old_version":"0.115.6","new_version":"0.138.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.34.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"websockets","old_version":"14.1","new_version":"14.2","repository_url":"https://github.com/python-websockets/websockets"},{"name":"pydantic","old_version":"2.10.4","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.7.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"sqlalchemy","old_version":"2.0.36","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"alembic","old_version":"1.14.0","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"psycopg","old_version":"3.2.3","new_version":"3.3.4","repository_url":"https://github.com/psycopg/psycopg"},{"name":"minio","old_version":"7.2.12","new_version":"7.2.20","repository_url":"https://github.com/minio/minio-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"rq","old_version":"2.1.0","new_version":"2.10.0","repository_url":"https://github.com/rq/rq"},{"name":"tenacity","old_version":"9.0.0","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"pytest-asyncio","old_version":"0.25.2","new_version":"0.26.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"6.0.0","new_version":"6.3.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"testcontainers","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"faker","old_version":"33.3.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"ruff","old_version":"0.9.1","new_version":"0.15.18","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.14.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-patch group with 21 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.6` | `0.138.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.0` | `0.49.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `14.1` | `14.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.10.4` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.7.1` | `2.14.2` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.36` | `2.0.51` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.14.0` | `1.18.4` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.3` | `3.3.4` |\n| [minio](https://github.com/minio/minio-py) | `7.2.12` | `7.2.20` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [rq](https://github.com/rq/rq) | `2.1.0` | `2.10.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.0.0` | `9.1.4` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.25.2` | `0.26.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.0.0` | `6.3.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.9.0` | `4.14.2` |\n| [faker](https://github.com/joke2k/faker) | `33.3.0` | `33.3.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.1` | `0.15.18` |\n| [mypy](https://github.com/python/mypy) | `1.14.1` | `1.20.2` |\n\n\nUpdates `fastapi` from 0.115.6 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.115.6...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.34.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.34.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 `websockets` from 14.1 to 14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-websockets/websockets/releases\"\u003ewebsockets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://websockets.readthedocs.io/en/stable/project/changelog.html\"\u003ehttps://websockets.readthedocs.io/en/stable/project/changelog.html\u003c/a\u003e for details.\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/python-websockets/websockets/commit/624a36cc9c1ea1369971387d7bb23533b2797350\"\u003e\u003ccode\u003e624a36c\u003c/code\u003e\u003c/a\u003e Release version 14.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/c8242bbb3ab7e8054a2cbae2bb88cb649bf730f4\"\u003e\u003ccode\u003ec8242bb\u003c/code\u003e\u003c/a\u003e Add changelog for \u003ca href=\"https://redirect.github.com/python-websockets/websockets/issues/1566\"\u003e#1566\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/17e309a830cabfe5e335bf96cb3795c45f053fbc\"\u003e\u003ccode\u003e17e309a\u003c/code\u003e\u003c/a\u003e Mention another symptom in the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7de24bd087e6e51901b6fd5d28bdb6a32404de69\"\u003e\u003ccode\u003e7de24bd\u003c/code\u003e\u003c/a\u003e Improve previous commit.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7e617b2a57177885926b3a4a8a092621ab719a00\"\u003e\u003ccode\u003e7e617b2\u003c/code\u003e\u003c/a\u003e Add regex support in \u003ccode\u003eServerProtocol(origins=...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/613f3f0ef83a0c80ae49a42766fb634295216c5c\"\u003e\u003ccode\u003e613f3f0\u003c/code\u003e\u003c/a\u003e Prevent close() from blocking when reading is paused.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/e7a098e1a0d5dffcac5f0600703c4ec2de0be48a\"\u003e\u003ccode\u003ee7a098e\u003c/code\u003e\u003c/a\u003e Prevent AssertionError in the recv_events thread.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/031ec31b70adc527836c5565a7809724fb888c9c\"\u003e\u003ccode\u003e031ec31\u003c/code\u003e\u003c/a\u003e Prevent close() from blocking when reading is paused.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/6317c00cc5af245116781ddfde518ec004de672e\"\u003e\u003ccode\u003e6317c00\u003c/code\u003e\u003c/a\u003e Clarify behavior of \u003ccode\u003erecv(timeout=0)\u003c/code\u003e behavior.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/b1e88fcb77f6b74b2eab6a11a4ee53e4f04937ac\"\u003e\u003ccode\u003eb1e88fc\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 2.21.3 to 2.22.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-websockets/websockets/compare/14.1...14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.10.4 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.10.4...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.7.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.7.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 `email-validator` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JoshData/python-email-validator/releases\"\u003eemail-validator's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/blob/main/CHANGELOG.md\"\u003eemail-validator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.0 (August 26, 2025)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/030a63a183a6a66450e98381ca9a23ab9769706a\"\u003e\u003ccode\u003e030a63a\u003c/code\u003e\u003c/a\u003e Version 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/e943a0f07f5c130b4a419e0cd79f705f36bf24fe\"\u003e\u003ccode\u003ee943a0f\u003c/code\u003e\u003c/a\u003e Raise TypeError when an invalid argument is passed for email, closes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/155\"\u003e#155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/f90d256045dc1ccbcffd5514189267d14a9e3ea1\"\u003e\u003ccode\u003ef90d256\u003c/code\u003e\u003c/a\u003e Remove local part length check unless new strict flag is given, fixes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/158\"\u003e#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/98800bac023b8713351393a5043034065f1ea6cb\"\u003e\u003ccode\u003e98800ba\u003c/code\u003e\u003c/a\u003e Add explicit checks for internationalized domain name characters invalid unde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/936aead3bf5c608f8561954e0d2955b7f97bfdad\"\u003e\u003ccode\u003e936aead\u003c/code\u003e\u003c/a\u003e Fix final syntax checks on normalized internationalized domains checking the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/8043de49596f08d54a07e2bc7c442ced074216a6\"\u003e\u003ccode\u003e8043de4\u003c/code\u003e\u003c/a\u003e NFC-normalize display names per UTS \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/39\"\u003e#39\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/bc08faa2a74b51a9e7ba7ff4f995c0b475cb5b12\"\u003e\u003ccode\u003ebc08faa\u003c/code\u003e\u003c/a\u003e Add one-off error messages for full-width-at and small-commercial-at which ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/a1c90ab58fb0f5d969a8351a68ca15bff068527c\"\u003e\u003ccode\u003ea1c90ab\u003c/code\u003e\u003c/a\u003e Split exceptions_types.py into exceptions.py and types.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/dbcf07cc5c8066c14b6dc58d2dbb4a1e582eeefd\"\u003e\u003ccode\u003edbcf07c\u003c/code\u003e\u003c/a\u003e Change package name from using underscore to dash to match PyPi normalized pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/7c22208ee5b82c377e960ddcea5293691eadc6cc\"\u003e\u003ccode\u003e7c22208\u003c/code\u003e\u003c/a\u003e Support ALLOW_DISPLAY_NAME and ALLOW_EMPTY_LOCAL in the CLI (\u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JoshData/python-email-validator/compare/v2.2.0...v2.3.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.36 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 `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 `alembic` from 1.14.0 to 1.18.4\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.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.18.3\u003c/h1\u003e\n\u003cp\u003eReleased: January 29, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed regression in version 1.18.0 due to \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e where autogenerate\nwould raise \u003ccode\u003eNoReferencedTableError\u003c/code\u003e when a foreign key constraint\nreferenced a table that was not part of the initial table load, including\ntables filtered out by the\n\u003ccode\u003eEnvironmentContext.configure.include_name\u003c/code\u003e callable or tables\nin remote schemas that were not included in the initial reflection run.\u003c/p\u003e\n\u003cp\u003eThe change in \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e was a performance optimization that eliminated\nadditional reflection queries for tables that were only referenced by\nforeign keys but not explicitly included in the main reflection run.\nHowever, this optimization inadvertently removed the creation of\n\u003ccode\u003eTable\u003c/code\u003e objects for these referenced tables, causing autogenerate\nto fail when processing foreign key constraints that pointed to them.\u003c/p\u003e\n\u003cp\u003eThe fix creates placeholder \u003ccode\u003eTable\u003c/code\u003e objects for foreign key targets\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 `psycopg` from 3.2.3 to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eFuture releases\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5 (unreleased)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003ePsycopg 3.3.1\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.2.3...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `minio` from 7.2.12 to 7.2.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/minio/minio-py/releases\"\u003eminio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBugfix Release 7.2.20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnable github CI run by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1543\"\u003eminio/minio-py#1543\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1521\"\u003e#1521\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1539\"\u003eminio/minio-py#1539\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields (… by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1540\"\u003eminio/minio-py#1540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1528\"\u003e#1528\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1541\"\u003eminio/minio-py#1541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix object_size/headers in ComposeSource by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1545\"\u003eminio/minio-py#1545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix complete_multipart_upload() to support SSE-C by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1544\"\u003eminio/minio-py#1544\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.18...7.2.20\"\u003ehttps://github.com/minio/minio-py/compare/7.2.18...7.2.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix release 7.2.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd region, extra_headers and extra_query_params by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1505\"\u003eminio/minio-py#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1521\"\u003eminio/minio-py#1521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields by \u003ca href=\"https://github.com/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1527\"\u003eminio/minio-py#1527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider by \u003ca href=\"https://github.com/jkandasa\"\u003e\u003ccode\u003e@​jkandasa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1528\"\u003eminio/minio-py#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncorrect existing checksum headers to both CreateMultipartUpload and UploadPart requests by \u003ca hre...\n\n_Description has been truncated_","html_url":"https://github.com/ShAuRyA-Noodle/Bad-Omens/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShAuRyA-Noodle%2FBad-Omens/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"4367197292","node_id":"PR_kwDOLRXzGM7XjuZI","number":49,"state":"open","title":"build(deps-dev): update testcontainers requirement from \u003e=4.10.0 to \u003e=4.14.2","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-05-02T00:10:26.000Z","updated_at":"2026-05-02T00:34:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.10.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.10.0...testcontainers-v4.14.2\"\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/hasansezertasan/opinionated-mixins/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasansezertasan%2Fopinionated-mixins/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"},{"uuid":"4363640401","node_id":"PR_kwDOSMI7H87XYXqd","number":42,"state":"open","title":"chore(deps): bump the dev-deps group with 16 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-05-01T08:56:50.000Z","updated_at":"2026-05-01T08:56:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dev-deps","update_count":16,"packages":[{"name":"pytest","old_version":"8.3.3","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"0.24.0","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"5.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"mcp","old_version":"1.9.4","new_version":"1.27.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"structlog","old_version":"24.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"testcontainers","old_version":"4.8.2","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"ruff","old_version":"0.7.4","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.13.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.7.10","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.7.3","new_version":"2.10.0","repository_url":"https://github.com/pypa/pip-audit"},{"name":"pre-commit","old_version":"4.0.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"fastapi","old_version":"0.111.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.30.1","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-deps group with 16 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.3` | `9.0.3` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.24.0` | `1.3.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `5.0.0` | `7.1.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.9.4` | `1.27.0` |\n| [structlog](https://github.com/hynek/structlog) | `24.4.0` | `25.5.0` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.8.2` | `4.14.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.7.4` | `0.15.12` |\n| [mypy](https://github.com/python/mypy) | `1.13.0` | `1.20.2` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.10` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.7.3` | `2.10.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.6.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.0` | `0.136.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.1` | `0.46.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.12` |\n\nUpdates `pytest` from 8.3.3 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\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/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\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/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.3.3...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 0.24.0 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/pytest-dev/pytest-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio 1.3.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.3.0\"\u003e1.3.0\u003c/a\u003e - 2025-11-10\u003c/h1\u003e\n\u003ch2\u003eRemoved\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pytest 9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1279\"\u003e#1279\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTested Python versions include free threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTests are run in the same pytest process, instead of spawning a subprocess with \u003ccode\u003epytest.Pytester.runpytest_subprocess\u003c/code\u003e. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.2.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.2.0\"\u003e1.2.0\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e--asyncio-debug\u003c/code\u003e CLI option and \u003ccode\u003easyncio_debug\u003c/code\u003e configuration option to enable asyncio debug mode for the default event loop. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003epytest.UsageError\u003c/code\u003e for invalid configuration values of \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e and \u003ccode\u003easyncio_default_test_loop_scope\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1189\"\u003e#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility with the Pyright type checker (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRuntimeError: There is no current event loop in thread 'MainThread'\u003c/code\u003e when any test unsets the event loop (such as when using \u003ccode\u003easyncio.run\u003c/code\u003e and \u003ccode\u003easyncio.Runner\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1177\"\u003e#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecation warning when decorating an asynchronous fixture with \u003ccode\u003e@pytest.fixture\u003c/code\u003e in [strict]{.title-ref} mode. The warning message now refers to the correct package. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the minimum required version of tox to v4.28. This change is only relevant if you use the \u003ccode\u003etox.ini\u003c/code\u003e file provided by pytest-asyncio to run tests.\u003c/li\u003e\n\u003cli\u003eExtend dependency on typing-extensions\u0026gt;=4.12 from Python\u0026lt;3.10 to Python\u0026lt;3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.1.1\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/v1.1.1\"\u003ev1.1.1\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cp\u003e- Addresses a build problem with setuptoos-scm \u0026gt;= 9 caused by invalid setuptools-scm configuration in pytest-asyncio. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1192\"\u003e#1192\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003epytest-asyncio 1.1.0\u003c/h2\u003e\n\u003ch1\u003eAdded\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePropagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancellation of tasks when the \u003ccode\u003eloop_scope\u003c/code\u003e ends (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/200\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarning when the current event loop is closed by a test\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixed\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/pytest-dev/pytest-asyncio/commit/2e9695fcf8c5c514f30f57b7d14ab83846357b96\"\u003e\u003ccode\u003e2e9695f\u003c/code\u003e\u003c/a\u003e docs: Compile changelog for v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/dd0e9ba3fa672fd6bf375004319742f8d3a50e12\"\u003e\u003ccode\u003edd0e9ba\u003c/code\u003e\u003c/a\u003e docs: Reference correct issue in news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4c31abe5bf46bca3c9bdc7b18405f3deba4145d0\"\u003e\u003ccode\u003e4c31abe\u003c/code\u003e\u003c/a\u003e Build(deps): Bump nh3 from 0.3.1 to 0.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/13e94770d7bb146c329ae0e02486c0a6b38f3772\"\u003e\u003ccode\u003e13e9477\u003c/code\u003e\u003c/a\u003e Link to migration guides from changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4d2cf3c36f47d7c4d563d401cdf229b35da34fbe\"\u003e\u003ccode\u003e4d2cf3c\u003c/code\u003e\u003c/a\u003e tests: handle Python 3.14 DefaultEventLoopPolicy deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ee3549b6efb729b934e370e2be8040b25b034010\"\u003e\u003ccode\u003eee3549b\u003c/code\u003e\u003c/a\u003e test: Remove obsolete test for the event_loop fixture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/7a67c82c5ae548f0968438e9dfa0f282d51c4597\"\u003e\u003ccode\u003e7a67c82\u003c/code\u003e\u003c/a\u003e tests: Fix failing test by preventing warning conversion to error.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a17b689a750d05b6fc9369f5fb2b06baaba83536\"\u003e\u003ccode\u003ea17b689\u003c/code\u003e\u003c/a\u003e test: add pytest config to isolated test directories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/18afc9df5a3153dc1fbdc4e11a56517ef95480df\"\u003e\u003ccode\u003e18afc9d\u003c/code\u003e\u003c/a\u003e fix(tests): replace runpytest_subprocess with runpytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/cdc6bd1de75b4738289eafd546f5e27a0bfd3b41\"\u003e\u003ccode\u003ecdc6bd1\u003c/code\u003e\u003c/a\u003e Add support for pytest 9 and drop Python 3.9 support\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v0.24.0...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 5.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.0.0 (2025-09-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for subprocesses measurement.\u003c/p\u003e\n\u003cp\u003eIt was a feature added long time ago when coverage lacked a nice way to measure subprocesses created in tests.\nIt relied on a \u003ccode\u003e.pth\u003c/code\u003e file, there was no way to opt-out and it created bad interations\nwith \u003ccode\u003ecoverage's new patch system \u0026lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch\u0026gt;\u003c/code\u003e_ added\nin \u003ccode\u003e7.10 \u0026lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003eTo migrate to this release you might need to enable the suprocess patch, example for \u003ccode\u003e.coveragerc\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003e.. code-block:: ini\u003c/p\u003e\n\u003cp\u003e[run]\npatch = subprocess\u003c/p\u003e\n\u003cp\u003eThis release also requires at least coverage 7.10.6.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSwitched packaging to have metadata completely in \u003ccode\u003epyproject.toml\u003c/code\u003e and use \u003ccode\u003ehatchling \u0026lt;https://pypi.org/project/hatchling/\u0026gt;\u003c/code\u003e_ for\nbuilding.\nContributed by Ofek Lev in \u003ccode\u003e[#551](https://github.com/pytest-dev/pytest-cov/issues/551) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/551\u0026gt;\u003c/code\u003e_\nwith some extras in \u003ccode\u003e[#716](https://github.com/pytest-dev/pytest-cov/issues/716) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/716\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved some not really necessary testing deps like \u003ccode\u003esix\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v5.0.0...v7.1.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.0 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\u003ch2\u003eVersion 0.27.2\u003c/h2\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.1\u003c/h2\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\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\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\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.0...0.28.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.29.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003eSupport Python 3.13 and PostgreSQL 17.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImplement GSSAPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1d4e5680 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1122\"\u003e#1122\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement SSPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1aab2094 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1128\"\u003e#1128\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd initial typings\n(by \u003ca href=\"https://github.com/bryanforbes\"\u003e\u003ccode\u003e@​bryanforbes\u003c/code\u003e\u003c/a\u003e in d42432bf for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1127\"\u003e#1127\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow building with Cython 3\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 1.9.4 to 1.27.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.27.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused \u003ccode\u003erequests\u003c/code\u003e dependency from simple-chatbot example by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1959\"\u003emodelcontextprotocol/python-sdk#1959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: backport conformance tests from main to v1.x by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2068\"\u003emodelcontextprotocol/python-sdk#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add RFC 8707 resource validation to OAuth client by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2069\"\u003emodelcontextprotocol/python-sdk#2069\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add idle timeout for StreamableHTTP sessions by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1994\"\u003emodelcontextprotocol/python-sdk#1994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: prevent command injection in example URL opening by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2085\"\u003emodelcontextprotocol/python-sdk#2085\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd VERSIONING.md, ROADMAP.md, and DEPENDENCY_POLICY.md by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2084\"\u003emodelcontextprotocol/python-sdk#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: restructure README into docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2091\"\u003emodelcontextprotocol/python-sdk#2091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: comprehensive feature documentation for SEP-1730 Tier 1 by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2090\"\u003emodelcontextprotocol/python-sdk#2090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stub pages and improve docs structure by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2101\"\u003emodelcontextprotocol/python-sdk#2101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix GitHub links to point to v1.x branch by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2102\"\u003emodelcontextprotocol/python-sdk#2102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add snippet verification for docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2115\"\u003emodelcontextprotocol/python-sdk#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add server-side tool error handling documentation by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2129\"\u003emodelcontextprotocol/python-sdk#2129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport: Add missing TasksCallCapability to v1.x by \u003ca href=\"https://github.com/BabyChrist666\"\u003e\u003ccode\u003e@​BabyChrist666\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2137\"\u003emodelcontextprotocol/python-sdk#2137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle non-UTF-8 bytes in stdio server stdin by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2303\"\u003emodelcontextprotocol/python-sdk#2303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle ClosedResourceError when transport closes mid-request by \u003ca href=\"https://github.com/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\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/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.26.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: add all-green job to pull-request-checks workflow by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1929\"\u003emodelcontextprotocol/python-sdk#1929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport: Support for Resource and ResourceTemplate metadata by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1928\"\u003emodelcontextprotocol/python-sdk#1928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: return HTTP 404 for unknown session IDs instead of 400 by \u003ca href=\"https://github.com/LucaButBoring\"\u003e\u003ccode\u003e@​LucaButBoring\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1945\"\u003emodelcontextprotocol/python-sdk#1945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.25.0...v1.26.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.25.0...v1.26.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.25.0\u003c/h2\u003e\n\u003ch2\u003eBranching Update\u003c/h2\u003e\n\u003cp\u003eStarting with this release, the repository has adopted a new branching strategy for v2 development:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emain\u003c/code\u003e\u003c/strong\u003e — v2 development (breaking changes)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ev1.x\u003c/code\u003e\u003c/strong\u003e — v1 maintenance (security and critical bug fixes only, with very rare feature additions ported from \u003ccode\u003emain\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUsers who need to stay on v1.x should pin to \u003ccode\u003emcp\u0026gt;=1.25,\u0026lt;2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe current plan is to work through v2 and have it released some time in Q1. This also relies on the next upcoming spec release which will heavily change how the transport layer works, which in turn will guide a lot of how we architect v2.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix for Url Elicitation issue 1768 by \u003ca href=\"https://github.com/gopitk\"\u003e\u003ccode\u003e@​gopitk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1780\"\u003emodelcontextprotocol/python-sdk#1780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add v1.x branch to main-checks workflow by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1802\"\u003emodelcontextprotocol/python-sdk#1802\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/modelcontextprotocol/python-sdk/commit/652478266702ac71a1d03692337bd5207ddbedf4\"\u003e\u003ccode\u003e6524782\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle ClosedResourceError when transport closes mid-request (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2334\"\u003e#2334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2e9897e2b916bef25e7755146aeb9f9b69c1075d\"\u003e\u003ccode\u003e2e9897e\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle non-UTF-8 bytes in stdio server stdin (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2303\"\u003e#2303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f8d98b63a7e9ab5855d79556d3d7e5638472af6c\"\u003e\u003ccode\u003ef8d98b6\u003c/code\u003e\u003c/a\u003e Backport: Add missing TasksCallCapability to v1.x (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2137\"\u003e#2137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c68e254bad1dd39e6a10dad43d954c6d17f9f514\"\u003e\u003ccode\u003ec68e254\u003c/code\u003e\u003c/a\u003e docs: add server-side tool error handling documentation (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2129\"\u003e#2129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/1ef124e4a85c1c0947fdc6ba1dd1af384d866064\"\u003e\u003ccode\u003e1ef124e\u003c/code\u003e\u003c/a\u003e docs: add snippet verification for docs/ pages (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2115\"\u003e#2115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/cfbbd7d71aeb094b122c8780a5cb3816e09f29af\"\u003e\u003ccode\u003ecfbbd7d\u003c/code\u003e\u003c/a\u003e docs: fix GitHub links to point to v1.x branch (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2102\"\u003e#2102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/1f9fb348f3311bb7cc139bc2c457220368cfea9e\"\u003e\u003ccode\u003e1f9fb34\u003c/code\u003e\u003c/a\u003e docs: fix stub pages and improve docs structure (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2101\"\u003e#2101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c86477c7b752c57e503c00b93cd7f161a2562d49\"\u003e\u003ccode\u003ec86477c\u003c/code\u003e\u003c/a\u003e docs: comprehensive feature documentation for SEP-1730 Tier 1 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2090\"\u003e#2090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/a77462b64da89439aa49cb115fff830f3b09d01e\"\u003e\u003ccode\u003ea77462b\u003c/code\u003e\u003c/a\u003e docs: restructure README into docs/ pages (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2091\"\u003e#2091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/b1adfcd88542fb2930f42cccab2f3629f605c498\"\u003e\u003ccode\u003eb1adfcd\u003c/code\u003e\u003c/a\u003e Add VERSIONING.md, ROADMAP.md, and DEPENDENCY_POLICY.md (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2084\"\u003e#2084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.9.4...v1.27.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `structlog` from 24.4.0 to 25.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/releases\"\u003estructlog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.5.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eHuge release! There's plenty of important little bug fixes and new features, but the headliner is definitely the improved ergonomics of \u003ccode\u003estructlog.dev.ConsoleRenderer\u003c/code\u003e. We have finally accepted that local development has different priorities than production and made it both mutable (with automatic re-configuration) and also easily retrievable (\u003ccode\u003ecr = ConsoleRenderer.get_active()\u003c/code\u003e). This allows you, for example, to disable Rich exception formatting as easily as \u003ccode\u003estructlog.dev.ConsoleRenderer.get_active().exception_formatter = structlog.dev.plain_traceback\u003c/code\u003e. Please check out the \u003ca href=\"https://www.structlog.org/en/stable/console-output.html\"\u003eupdated docs\u003c/a\u003e!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.thanks.dev\"\u003ethanks.dev\u003c/a\u003e (@\u003ca href=\"https://github.com/thnxdev\"\u003ethnxdev\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"https://quesma.com/\"\u003eQuesma\u003c/a\u003e (\u003ca href=\"https://github.com/QuesmaOrg\"\u003e\u003ccode\u003e@​QuesmaOrg\u003c/code\u003e\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://www.lambdatest.com\"\u003eLambdaTest\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), Jeff McCarrell (@\u003ca href=\"https://github.com/jmccarrell\"\u003ejmccarrell\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e), and Jeff McCarrell (@\u003ca href=\"https://github.com/jmccarrell\"\u003ejmccarrell\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e's \u003cem\u003epad_event\u003c/em\u003e argument has been renamed to \u003cem\u003epad_event_to\u003c/em\u003e to differentiate it from the boolean \u003cem\u003epad_level\u003c/em\u003e argument. \u003cem\u003epad_event\u003c/em\u003e is now deprecated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_active()\u003c/code\u003e that returns the currently active \u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e now supports setting the \u003ccode\u003eexception_formatter\u003c/code\u003e attribute.\u003c/p\u003e\n\u003cp\u003eYou can now disable the pretty-printing of exceptions by setting it to \u003ccode\u003estructlog.dev.plain_traceback\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003ecr = structlog.dev.ConsoleRenderer.get_active()\r\ncr.exception_formatter = structlog.dev.plain_traceback\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSame goes for \u003cem\u003esort_keys\u003c/em\u003e, \u003cem\u003ecolumns\u003c/em\u003e, \u003cem\u003ecolors\u003c/em\u003e, \u003cem\u003eforce_colors\u003c/em\u003e, \u003cem\u003elevel_styles\u003c/em\u003e, \u003cem\u003epad_event_to\u003c/em\u003e, \u003cem\u003eevent_key\u003c/em\u003e, \u003cem\u003etimestamp_key\u003c/em\u003e, and \u003cem\u003erepr_native_str\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/756\"\u003e#756\u003c/a\u003e \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/757\"\u003e#757\u003c/a\u003e \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/759\"\u003e#759\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_default_column_styles()\u003c/code\u003e for reuse the default column styles. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/741\"\u003e#741\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.testing.capture_logs()\u003c/code\u003e now optionally accepts \u003cem\u003eprocessors\u003c/em\u003e to apply before capture. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/728\"\u003e#728\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/blob/main/CHANGELOG.md\"\u003estructlog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/structlog/compare/25.4.0...25.5.0\"\u003e25.5.0\u003c/a\u003e - 2025-10-27\u003c/h2\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e's \u003cem\u003epad_event\u003c/em\u003e argument has been renamed to \u003cem\u003epad_event_to\u003c/em\u003e to differentiate it from the boolean \u003cem\u003epad_level\u003c/em\u003e argument.\n\u003cem\u003epad_event\u003c/em\u003e is now deprecated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_active()\u003c/code\u003e that returns the currently active \u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e now supports setting the \u003ccode\u003eexception_formatter\u003c/code\u003e attribute.\u003c/p\u003e\n\u003cp\u003eYou can now disable the pretty-printing of exceptions by setting it to \u003ccode\u003estructlog.dev.plain_traceback\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003ecr = structlog.dev.ConsoleRenderer.get_active()\ncr.exception_formatter = structlog.dev.plain_traceback\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSame goes for \u003cem\u003esort_keys\u003c/em\u003e, \u003cem\u003ecolumns\u003c/em\u003e, \u003cem\u003ecolors\u003c/em\u003e, \u003cem\u003eforce_colors\u003c/em\u003e, \u003cem\u003elevel_styles\u003c/em\u003e, \u003cem\u003epad_event_to\u003c/em\u003e, \u003cem\u003eevent_key\u003c/em\u003e, \u003cem\u003etimestamp_key\u003c/em\u003e, and \u003cem\u003erepr_native_str\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/756\"\u003e#756\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/757\"\u003e#757\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/759\"\u003e#759\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_default_column_styles()\u003c/code\u003e for reuse the default column styles.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/741\"\u003e#741\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.testing.capture_logs()\u003c/code\u003e now optionally accepts \u003cem\u003eprocessors\u003c/em\u003e to apply before capture.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/728\"\u003e#728\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.dev.RichTracebackFormatter\u003c/code\u003e now exposes the upstream \u003cem\u003ecode_width\u003c/em\u003e parameter.\nDefault \u003cem\u003ewidth\u003c/em\u003e is now \u003ccode\u003eNone\u003c/code\u003e for full terminal width.\nFull terminal width is now handled by Rich itself, bringing support for reflow and \u003ccode\u003eCOLUMN\u003c/code\u003e environment variable.\nPassing \u003ccode\u003e-1\u003c/code\u003e for \u003cem\u003ewidth\u003c/em\u003e is now deprecated and automatically replaced by \u003ccode\u003eNone\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/717\"\u003e#717\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNative loggers now allow the passing of a dictionary for dictionary-based interpolation \u003ccode\u003elog.info(\u0026quot;hello %(name)s!\u0026quot;, {\u0026quot;name\u0026quot;: \u0026quot;world\u0026quot;})\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/748\"\u003e#748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOn Python 3.11+, \u003ccode\u003estructlog.processors.CallsiteParameterAdder\u003c/code\u003e now supports \u003ccode\u003eCallsiteParameter.QUAL_NAME\u003c/code\u003e that adds the qualified name of the callsite, including scope and class names.\nThis is only available for \u003cem\u003estructlog\u003c/em\u003e-originated events since the standard library has no equivalent.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.stdlib.LoggerFactory\u003c/code\u003e now supports the \u003cem\u003estacklevel\u003c/em\u003e parameter.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/763\"\u003e#763\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/hynek/structlog/commit/c0ef9e09e7a536cae65e33c1ac1c8b4e6a6f7511\"\u003e\u003ccode\u003ec0ef9e0\u003c/code\u003e\u003c/a\u003e Prepare 25.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/9cb662fe32046f92f08346c58089a2dcba7cb4bf\"\u003e\u003ccode\u003e9cb662f\u003c/code\u003e\u003c/a\u003e docs: nit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/5400612735ad07bbe8ee9f2279f3040aa2e69ca4\"\u003e\u003ccode\u003e5400612\u003c/code\u003e\u003c/a\u003e docs/stdlib: add warning about ProcessorFormatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/1c2c19aa19c8f30330b76465b7a0d9993b9e8360\"\u003e\u003ccode\u003e1c2c19a\u003c/code\u003e\u003c/a\u003e Try validating pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/aca10f23dd12bd9e14cfe712f1ce66c9cb5f4400\"\u003e\u003ccode\u003eaca10f2\u003c/code\u003e\u003c/a\u003e Drop pretend dependency (\u003ca href=\"https://redirect.github.com/hynek/structlog/issues/766\"\u003e#766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/3800d401db2c682c7c83b2d3eec38d81c9791f4d\"\u003e\u003ccode\u003e3800d40\u003c/code\u003e\u003c/a\u003e docs: use native\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/ecaa15ac6b166ebca9f2b4f5cfdb4c4ec138a602\"\u003e\u003ccode\u003eecaa15a\u003c/code\u003e\u003c/a\u003e stdlib: add support for stacklevel (\u003ca href=\"https://redirect.github.com/hynek/structlog/issues/763\"\u003e#763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/7f7a221aed6bbff3c13cefd7effe14cc4f0cfc24\"\u003e\u003ccode\u003e7f7a221\u003c/code\u003e\u003c/a\u003e update dev (\u003ca href=\"https://redirect.github.com/hynek/structlog/issues/765\"\u003e#765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/5acfc85e3c3fa821dc65b55a226900d40dc0831c\"\u003e\u003ccode\u003e5acfc85\u003c/code\u003e\u003c/a\u003e docs: 5% bigger still\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/c102862e3f30de84c898c4501418dede15056c6d\"\u003e\u003ccode\u003ec102862\u003c/code\u003e\u003c/a\u003e docs: bigger font\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hynek/structlog/compare/24.4.0...25.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.8.2 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003epython 3.14 is now supported!\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.2\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github...\n\n_Description has been truncated_","html_url":"https://github.com/Orm15/mcp-fintech-demo/pull/42","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orm15%2Fmcp-fintech-demo/issues/42","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42/packages"},{"uuid":"4339256101","node_id":"PR_kwDOHTdvBs7WIng2","number":1590,"state":"closed","title":"deps(ibis): bump the all group across 1 directory with 33 updates","user":"dependabot[bot]","labels":["ibis","dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-04T23:10:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T22:31:53.000Z","updated_at":"2026-05-04T23:10:38.000Z","time_to_close":607123,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(ibis): bump","group_name":"all","update_count":33,"packages":[{"name":"fastapi","old_version":"0.120.1","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.10.6","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"ibis-framework","old_version":"10.8.0","new_version":"12.0.0","repository_url":"https://github.com/ibis-project/ibis"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.49.2","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"orjson","old_version":"3.11.7","new_version":"3.11.8","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"geoalchemy2","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/geoalchemy/geoalchemy2"},{"name":"gql","old_version":"3.5.2","new_version":"4.0.0","repository_url":"https://github.com/graphql-python/gql"},{"name":"anyio","old_version":"4.10.0","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"duckdb","old_version":"1.3.2","new_version":"1.5.2","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"oracledb","old_version":"3.3.0","new_version":"3.4.2","repository_url":"https://github.com/oracle/python-oracledb"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"gunicorn","old_version":"23.0.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"redshift-connector","old_version":"2.1.7","new_version":"2.1.13","repository_url":"https://github.com/aws/amazon-redshift-python-driver"},{"name":"datafusion","old_version":"47.0.0","new_version":"53.0.0","repository_url":"https://github.com/apache/datafusion-python"},{"name":"starlette","old_version":"0.49.3","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"databricks-sql-connector","old_version":"4.2.5","new_version":"4.2.6","repository_url":"https://github.com/databricks/databricks-sql-python"},{"name":"databricks-sdk","old_version":"0.73.0","new_version":"0.105.0","repository_url":"https://github.com/databricks/databricks-sdk-py"},{"name":"pyspark","old_version":"3.5.7","new_version":"4.1.1","repository_url":"https://github.com/apache/spark"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"wren-engine","old_version":"0.1.0","new_version":"0.3.0","repository_url":"https://github.com/Canner/wren-engine"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"plotly","old_version":"6.6.0","new_version":"6.7.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"testcontainers","old_version":"4.9.2","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"sqlalchemy","old_version":"2.0.39","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.11.2","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"psycopg2","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"clickhouse-connect","old_version":"0.8.15","new_version":"0.15.1","repository_url":"https://github.com/ClickHouse/clickhouse-connect"},{"name":"polars","old_version":"1.39.3","new_version":"1.40.1","repository_url":"https://github.com/pola-rs/polars"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all group with 33 updates in the /ibis-server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.120.1` | `0.136.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.10.6` | `2.13.3` |\n| [ibis-framework](https://github.com/ibis-project/ibis) | `10.8.0` | `12.0.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.49.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.11.8` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [geoalchemy2](https://github.com/geoalchemy/geoalchemy2) | `0.17.1` | `0.19.0` |\n| [gql](https://github.com/graphql-python/gql) | `3.5.2` | `4.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.10.0` | `4.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.3.2` | `1.5.2` |\n| [oracledb](https://github.com/oracle/python-oracledb) | `3.3.0` | `3.4.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.46.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `23.0.0` | `25.3.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [redshift-connector](https://github.com/aws/amazon-redshift-python-driver) | `2.1.7` | `2.1.13` |\n| [datafusion](https://github.com/apache/datafusion-python) | `47.0.0` | `53.0.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.49.3` | `1.0.0` |\n| [databricks-sql-connector](https://github.com/databricks/databricks-sql-python) | `4.2.5` | `4.2.6` |\n| [databricks-sdk](https://github.com/databricks/databricks-sdk-py) | `0.73.0` | `0.105.0` |\n| [pyspark](https://github.com/apache/spark) | `3.5.7` | `4.1.1` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.1.0` |\n| [wren-engine](https://github.com/Canner/wren-engine) | `0.1.0` | `0.3.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.6.0` | `6.7.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.3` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.9.2` | `4.14.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.39` | `2.0.49` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.2` | `0.15.12` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect) | `0.8.15` | `0.15.1` |\n| [polars](https://github.com/pola-rs/polars) | `1.39.3` | `1.40.1` |\n\n\nUpdates `fastapi` from 0.120.1 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.120.1...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.10.6 to 2.13.3\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.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\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd zizmor for GitHub Actions workflow linting 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/13039\"\u003e#13039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jiter to v0.14.0 to fix a segmentation fault on musl Linux 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/13064\"\u003e#13064\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/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.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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow default factories of private attributes to take validated model data 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/13013\"\u003e#13013\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9e9a11132c980c4ec84ff6d2df06d4c1a55ca8f3\"\u003e\u003ccode\u003e9e9a111\u003c/code\u003e\u003c/a\u003e Fix backported test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1ec8c6aa0cae1c78409c6f31af738a24e16c7124\"\u003e\u003ccode\u003e1ec8c6a\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fb4f2044436e9fa4ff9745479ce263016a99c4d6\"\u003e\u003ccode\u003efb4f204\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ca3ddd1149bd3b14273922a29da174804496a055\"\u003e\u003ccode\u003eca3ddd1\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/000e823a3ab7545b0c6064fde34effdcd02044ab\"\u003e\u003ccode\u003e000e823\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d45d8be3ffb6dfc6d0c64da6980140c91ff841fb\"\u003e\u003ccode\u003ed45d8be\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/54aca609ce58e73dfe1c681d93432fbe3a4621da\"\u003e\u003ccode\u003e54aca60\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/46bf4fa648af3a1fbf4603a37f210e9d9c618357\"\u003e\u003ccode\u003e46bf4fa\u003c/code\u003e\u003c/a\u003e Fix Pydantic release workflow (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13067\"\u003e#13067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1b359edab09c623464d23c6fd2503ae5ff276d43\"\u003e\u003ccode\u003e1b359ed\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13065\"\u003e#13065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b1bf19445d8ac144a7a0e82674d2d87eebab6c18\"\u003e\u003ccode\u003eb1bf194\u003c/code\u003e\u003c/a\u003e Fix model equality when using runtime \u003ccode\u003eextra\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13062\"\u003e#13062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.10.6...v2.13.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ibis-framework` from 10.8.0 to 12.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ibis-project/ibis/releases\"\u003eibis-framework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/ibis-project/ibis/compare/11.0.0...12.0.0\"\u003e12.0.0\u003c/a\u003e (2026-02-07)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e PySpark \u0026lt;3.5 is no longer supported\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e implement \u003ccode\u003eupsert()\u003c/code\u003e using \u003ccode\u003eMERGE INTO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11624\"\u003e#11624\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9126733b38e1c92f6e787f92dc9954e88ab6400d\"\u003e9126733\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/5391\"\u003e#5391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support Table.cast(my_col=int) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9e209f37b6228472071ef8b9168ed56ec9c0a727\"\u003e9e209f3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatabricks:\u003c/strong\u003e support json literals (\u003ca href=\"https://github.com/ibis-project/ibis/commit/f46a58f9eb5128e64981b756b0a866e291663997\"\u003ef46a58f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatafusion:\u003c/strong\u003e add compilation rule for Strftime (\u003ca href=\"https://github.com/ibis-project/ibis/commit/6fa8411e43a68f0f0ac38f493242bc1ff28a5253\"\u003e6fa8411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e enable compatibility with pandas 3.0.0 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11873\"\u003e#11873\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34a36be80e589e449501942bda8ec4125e89beb0\"\u003e34a36be\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ematerialize:\u003c/strong\u003e add new backend for Materialize streaming database (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11893\"\u003e#11893\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/35fcce08369ed7650b00fed7064535eeceeaba41\"\u003e35fcce0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies (\u003ca href=\"https://github.com/ibis-project/ibis/commit/aa16d0885ff62ac92ec1027a245158896f74cc0d\"\u003eaa16d08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e support pyspark 4.0 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e9c35e6a3574855daf4e02f4217727df0d54872d\"\u003ee9c35e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esinglestoredb:\u003c/strong\u003e add SingleStoreDB backend (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11595\"\u003e#11595\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a83cfef0f6b84f3dbb83ca55682100f32488d7c2\"\u003ea83cfef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport JSON literal values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11728\"\u003e#11728\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/38b19c765f02b18684ec6e7b4e0815d117fc8b60\"\u003e38b19c7\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11727\"\u003e#11727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e improve typing of ibis.common.collections (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e3aba92c6126e556e179f2cbff3dc837802de790\"\u003ee3aba92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make dtype() and schema() more typesafe (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11856\"\u003e#11856\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/116886f807fbf62ce0265ef152f48540c284b8c5\"\u003e116886f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make more arguments positional-only (\u003ca href=\"https://github.com/ibis-project/ibis/commit/610c4504b438b5ac302b384073134ff5c8458908\"\u003e610c450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make types more precise for many common Values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11771\"\u003e#11771\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2eb772a7a8a5632edb347ecd49af5773c268d188\"\u003e2eb772a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd order_by to first and last (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7ead7876435c55a10dc5a6457a49b9e19b7a654e\"\u003e7ead787\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11656\"\u003e#11656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd upper _method_overrides in decompile (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e7956f4cbb5daef11bbc01177ccc56f5ae3bf3fa\"\u003ee7956f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11717\"\u003e#11717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e relax decimal upper bounds (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d05751b445d65ae0a1c786c756ea1235d51a7f18\"\u003ed05751b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebiquery:\u003c/strong\u003e use qualified table name for upserts (\u003ca href=\"https://github.com/ibis-project/ibis/commit/120b2d874d7b191886dcdad69be76c26bbe062ce\"\u003e120b2d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecitation:\u003c/strong\u003e fix CITATION.cff [skip ci] (\u003ca href=\"https://github.com/ibis-project/ibis/commit/305526a8d6df097765b2affce60b1731f2608a1b\"\u003e305526a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ed346e6d33157d9cf6e01f91bc67ac8866e09eb3\"\u003eed346e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e make decimal casts more permissive (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba087d2d3a6c57451bdcf81aaa4fa5cf32350831\"\u003eba087d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin dep on sqlglot to \u0026lt;28 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3e9156ef0b0b10ce6f3d95db97401175a7d9df56\"\u003e3e9156e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e sqlglot 28.0 incompatibilities (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11839\"\u003e#11839\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ab21efd939b7cd6b7cf8f03ed7a22ec96d511be0\"\u003eab21efd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e typo in Ibis description in why.qmd (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11816\"\u003e#11816\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/402c37d9920fa09bcc1aa5f9202367b01cc98ef1\"\u003e402c37d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003educkdb:\u003c/strong\u003e create a single table from Python data object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7f82e5e4aed0a492538016bfa152132ad0bc928f\"\u003e7f82e5e\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11709\"\u003e#11709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexasol:\u003c/strong\u003e update Exasol Docker image tag to 2025.1.8 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11806\"\u003e#11806\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2414952998f5f078b931e467e5b7f495062308ed\"\u003e2414952\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11703\"\u003e#11703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eflink:\u003c/strong\u003e don't pass unsupported \u0026quot;position\u0026quot; flag to regexp_replace (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34f39ccb32be76b5e61f87938ed4cfdeb560ce7c\"\u003e34f39cc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emssql:\u003c/strong\u003e use \u003ccode\u003esge.National\u003c/code\u003e to support unicode in \u003ccode\u003einformation_schema\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11877\"\u003e#11877\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a254ccb02f58d4f5b5f582249f5cfa03d141d8eb\"\u003ea254ccb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emysql:\u003c/strong\u003e use getuser() and empty password string by default (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11904\"\u003e#11904\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba0218f1bba2cbb9f2bb3a7aea39178365c0f663\"\u003eba0218f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e handle cross joins without passing join keys (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d3c3bad21a2b9703047dbf4977d3d250759d189e\"\u003ed3c3bad\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11764\"\u003e#11764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e support asof_join with no predicates (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3fc9b64c2a464f66d5ed412e7cab7a7bbb58b811\"\u003e3fc9b64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgres:\u003c/strong\u003e fix postgres asof joins to consider predicates correctly (\u003ca href=\"https://github.com/ibis-project/ibis/commit/064bd2d024d1165a92615613d977e85d4dad6331\"\u003e064bd2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove bogus leading ' from Struct repr (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d7083c2c96e12bb7b2a1e643a52b4725f4303fcb\"\u003ed7083c2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereturn a tuple, not generator, from Table.bind() (\u003ca href=\"https://github.com/ibis-project/ibis/commit/cfc8b0837e313bd76cf65561472a605ea6e35bef\"\u003ecfc8b08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e create a single table from Python object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/4e6ddcfa2d1dc763d431925b059c458cd0ce884a\"\u003e4e6ddcf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e precision loss in divide (\u003ca href=\"https://github.com/ibis-project/ibis/commit/c77e1bd041df7e091c0c6c1aa5d2e87c3a99dddc\"\u003ec77e1bd\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/ibis-project/ibis/blob/main/docs/release_notes_generated.qmd\"\u003eibis-framework's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/ibis-project/ibis/compare/11.0.0...12.0.0\"\u003e12.0.0\u003c/a\u003e (2026-02-07)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e PySpark \u0026lt;3.5 is no longer supported\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e implement \u003ccode\u003eupsert()\u003c/code\u003e using \u003ccode\u003eMERGE INTO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11624\"\u003e#11624\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9126733b38e1c92f6e787f92dc9954e88ab6400d\"\u003e9126733\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/5391\"\u003e#5391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support Table.cast(my_col=int) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9e209f37b6228472071ef8b9168ed56ec9c0a727\"\u003e9e209f3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatabricks:\u003c/strong\u003e support json literals (\u003ca href=\"https://github.com/ibis-project/ibis/commit/f46a58f9eb5128e64981b756b0a866e291663997\"\u003ef46a58f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatafusion:\u003c/strong\u003e add compilation rule for Strftime (\u003ca href=\"https://github.com/ibis-project/ibis/commit/6fa8411e43a68f0f0ac38f493242bc1ff28a5253\"\u003e6fa8411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e enable compatibility with pandas 3.0.0 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11873\"\u003e#11873\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34a36be80e589e449501942bda8ec4125e89beb0\"\u003e34a36be\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ematerialize:\u003c/strong\u003e add new backend for Materialize streaming database (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11893\"\u003e#11893\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/35fcce08369ed7650b00fed7064535eeceeaba41\"\u003e35fcce0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies (\u003ca href=\"https://github.com/ibis-project/ibis/commit/aa16d0885ff62ac92ec1027a245158896f74cc0d\"\u003eaa16d08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e support pyspark 4.0 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e9c35e6a3574855daf4e02f4217727df0d54872d\"\u003ee9c35e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esinglestoredb:\u003c/strong\u003e add SingleStoreDB backend (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11595\"\u003e#11595\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a83cfef0f6b84f3dbb83ca55682100f32488d7c2\"\u003ea83cfef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport JSON literal values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11728\"\u003e#11728\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/38b19c765f02b18684ec6e7b4e0815d117fc8b60\"\u003e38b19c7\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11727\"\u003e#11727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e improve typing of ibis.common.collections (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e3aba92c6126e556e179f2cbff3dc837802de790\"\u003ee3aba92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make dtype() and schema() more typesafe (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11856\"\u003e#11856\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/116886f807fbf62ce0265ef152f48540c284b8c5\"\u003e116886f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make more arguments positional-only (\u003ca href=\"https://github.com/ibis-project/ibis/commit/610c4504b438b5ac302b384073134ff5c8458908\"\u003e610c450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make types more precise for many common Values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11771\"\u003e#11771\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2eb772a7a8a5632edb347ecd49af5773c268d188\"\u003e2eb772a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd order_by to first and last (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7ead7876435c55a10dc5a6457a49b9e19b7a654e\"\u003e7ead787\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11656\"\u003e#11656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd upper _method_overrides in decompile (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e7956f4cbb5daef11bbc01177ccc56f5ae3bf3fa\"\u003ee7956f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11717\"\u003e#11717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e relax decimal upper bounds (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d05751b445d65ae0a1c786c756ea1235d51a7f18\"\u003ed05751b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebiquery:\u003c/strong\u003e use qualified table name for upserts (\u003ca href=\"https://github.com/ibis-project/ibis/commit/120b2d874d7b191886dcdad69be76c26bbe062ce\"\u003e120b2d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecitation:\u003c/strong\u003e fix CITATION.cff [skip ci] (\u003ca href=\"https://github.com/ibis-project/ibis/commit/305526a8d6df097765b2affce60b1731f2608a1b\"\u003e305526a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ed346e6d33157d9cf6e01f91bc67ac8866e09eb3\"\u003eed346e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e make decimal casts more permissive (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba087d2d3a6c57451bdcf81aaa4fa5cf32350831\"\u003eba087d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin dep on sqlglot to \u0026lt;28 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3e9156ef0b0b10ce6f3d95db97401175a7d9df56\"\u003e3e9156e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e sqlglot 28.0 incompatibilities (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11839\"\u003e#11839\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ab21efd939b7cd6b7cf8f03ed7a22ec96d511be0\"\u003eab21efd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e typo in Ibis description in why.qmd (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11816\"\u003e#11816\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/402c37d9920fa09bcc1aa5f9202367b01cc98ef1\"\u003e402c37d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003educkdb:\u003c/strong\u003e create a single table from Python data object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7f82e5e4aed0a492538016bfa152132ad0bc928f\"\u003e7f82e5e\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11709\"\u003e#11709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexasol:\u003c/strong\u003e update Exasol Docker image tag to 2025.1.8 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11806\"\u003e#11806\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2414952998f5f078b931e467e5b7f495062308ed\"\u003e2414952\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11703\"\u003e#11703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eflink:\u003c/strong\u003e don't pass unsupported \u0026quot;position\u0026quot; flag to regexp_replace (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34f39ccb32be76b5e61f87938ed4cfdeb560ce7c\"\u003e34f39cc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emssql:\u003c/strong\u003e use \u003ccode\u003esge.National\u003c/code\u003e to support unicode in \u003ccode\u003einformation_schema\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11877\"\u003e#11877\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a254ccb02f58d4f5b5f582249f5cfa03d141d8eb\"\u003ea254ccb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emysql:\u003c/strong\u003e use getuser() and empty password string by default (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11904\"\u003e#11904\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba0218f1bba2cbb9f2bb3a7aea39178365c0f663\"\u003eba0218f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e handle cross joins without passing join keys (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d3c3bad21a2b9703047dbf4977d3d250759d189e\"\u003ed3c3bad\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11764\"\u003e#11764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e support asof_join with no predicates (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3fc9b64c2a464f66d5ed412e7cab7a7bbb58b811\"\u003e3fc9b64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgres:\u003c/strong\u003e fix postgres asof joins to consider predicates correctly (\u003ca href=\"https://github.com/ibis-project/ibis/commit/064bd2d024d1165a92615613d977e85d4dad6331\"\u003e064bd2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove bogus leading ' from Struct repr (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d7083c2c96e12bb7b2a1e643a52b4725f4303fcb\"\u003ed7083c2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereturn a tuple, not generator, from Table.bind() (\u003ca href=\"https://github.com/ibis-project/ibis/commit/cfc8b0837e313bd76cf65561472a605ea6e35bef\"\u003ecfc8b08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e create a single table from Python object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/4e6ddcfa2d1dc763d431925b059c458cd0ce884a\"\u003e4e6ddcf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e precision loss in divide (\u003ca href=\"https://github.com/ibis-project/ibis/commit/c77e1bd041df7e091c0c6c1aa5d2e87c3a99dddc\"\u003ec77e1bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport \u003ccode\u003eBackend == \u0026quot;some non backend object\u0026quot;\u003c/code\u003e (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a5e7c2298d1582261c0963040a687c3987507c62\"\u003ea5e7c22\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/ibis-project/ibis/commit/01e429b210f19f87e0284bd18fb072df6d3baa59\"\u003e\u003ccode\u003e01e429b\u003c/code\u003e\u003c/a\u003e chore(release): 12.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/537b346aecbaaad232d08ae9a12d38d211ae0926\"\u003e\u003ccode\u003e537b346\u003c/code\u003e\u003c/a\u003e chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/76c3b63b33f9e6ee2993e2a2875f22ed3e405349\"\u003e\u003ccode\u003e76c3b63\u003c/code\u003e\u003c/a\u003e chore(deps): update astral-sh/setup-uv action to v7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/da202da06c17a525caf767f0f995f65108a8f3f3\"\u003e\u003ccode\u003eda202da\u003c/code\u003e\u003c/a\u003e chore(deps): update apache/druid docker tag to v36\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba0218f1bba2cbb9f2bb3a7aea39178365c0f663\"\u003e\u003ccode\u003eba0218f\u003c/code\u003e\u003c/a\u003e fix(mysql): use getuser() and empty password string by default (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11904\"\u003e#11904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/a4ef82f82ef103fd233560adce0fbe220481d7ef\"\u003e\u003ccode\u003ea4ef82f\u003c/code\u003e\u003c/a\u003e chore(deps): update aws-actions/configure-aws-credentials action to v6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/601cd8f3dc18c7f8a91aa91319b68aaa181a8a16\"\u003e\u003ccode\u003e601cd8f\u003c/code\u003e\u003c/a\u003e chore(deps): update ghcr.io/singlestore-labs/singlestoredb-dev docker tag to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/14c912425af4b318733fdc1460913ccfa4613414\"\u003e\u003ccode\u003e14c9124\u003c/code\u003e\u003c/a\u003e chore(deps): update materialize/materialized docker tag to v26.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/b746edfb660c2b8155debc135884376742cc6929\"\u003e\u003ccode\u003eb746edf\u003c/code\u003e\u003c/a\u003e chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.9.30\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/7da40126f178a29d6211f8cfe29421585cff59fc\"\u003e\u003ccode\u003e7da4012\u003c/code\u003e\u003c/a\u003e chore(deps): upgrade ruff, and fix lint violations (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11899\"\u003e#11899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ibis-project/ibis/compare/10.8.0...12.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.49.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.49.0.dev0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.48.0...v2.49.0-dev0\"\u003e2.49.0-dev0\u003c/a\u003e (2026-01-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove deprecated rsa dependency (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e98cf69284d3620619a70b54fb0b9533caf11878\"\u003ee98cf69284d3620619a70b54fb0b9533caf11878\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth 2.48.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-21)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827\"\u003e383c9827\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b\"\u003e454b441b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2\"\u003e52558ae2\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1\"\u003e8dcf91a1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064\"\u003e25c1b064\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a240\"\u003e3f88a240\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e\"\u003e97bfea9e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e10\"\u003ebfc07e10\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20c\"\u003ee431f20c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.48.0rc0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0rc0\"\u003e2.48.0rc0\u003c/a\u003e (2026-01-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehonor NO_GCE_CHECK environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c98\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse user_verification=preferred for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set by empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoved content-header from AWS IMDS (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea\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/googleapis/google-auth-library-python/blob/main/CHANGELOG.md\"\u003egoogle-auth's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/google-auth/#history\"\u003ePyPI History\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-22)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558ae2881b1e6555f6f5c0d76365c15807ead9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91a1b05c85fbbd0bcee78d66e498099102ab\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c9827536d9376e8248370ce4c2b83e468d027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064545702cbef087cfcd15fbbb6ef1af74f\"\u003e25c1b064545702cbef087cfcd15fbbb6ef1af74f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f20cf73ccac71926a23ec454468cea92e053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a24089c4ee6822d510de0db210b54260d873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.46.0...v2.47.0\"\u003e2.47.0\u003c/a\u003e (2026-01-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop \u003ccode\u003ecachetools\u003c/code\u003e dependency in favor of simple local implementation (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1590\"\u003e#1590\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\"\u003e5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 support (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1918\"\u003e#1918\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\"\u003e60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.45.0...v2.46.0\"\u003e2.46.0\u003c/a\u003e (2026-01-05)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate urllib3 docstrings for v2 compatibility (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f1aeea2d1014ea1d244a4c3470e52d74d55404b\"\u003e3f1aeea2d1014ea1d244a4c3470e52d74d55404b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRecognize workload certificate config in has_default_client_cert_source for mTLS for Agentic Identities (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1907\"\u003e#1907\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/0b9107d573123e358c347ffa067637f992af61b4\"\u003e0b9107d573123e358c347ffa067637f992af61b4\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\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-auth-library-python/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.0.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.11.7 to 3.11.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8 - 2026-03-31\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/5cbb3d0398a2f42de51210270286fecd798c5d78\"\u003e\u003ccode\u003e5cbb3d0\u003c/code\u003e\u003c/a\u003e 3.11.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4195d7f263e33076295b75efdcbaf6a55af8674e\"\u003e\u003ccode\u003e4195d7f\u003c/code\u003e\u003c/a\u003e writer::half\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d00641b69410728a735f0855eb1c2843b0a5819b\"\u003e\u003ccode\u003ed00641b\u003c/code\u003e\u003c/a\u003e writer::uuid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/c84d9b4ba4853781af943fa5c493e261e2f82b84\"\u003e\u003ccode\u003ec84d9b4\u003c/code\u003e\u003c/a\u003e build and compatibility misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4547234b681fac5e0e0734cf44c21e75f9654e43\"\u003e\u003ccode\u003e4547234\u003c/code\u003e\u003c/a\u003e ffi::numpy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/0d4a5ad1f17a72528ba027554466fdec6580cdeb\"\u003e\u003ccode\u003e0d4a5ad\u003c/code\u003e\u003c/a\u003e datetime PyRef idiom\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/e93a13d372ec956d027e71d023eb534b8445ac85\"\u003e\u003ccode\u003ee93a13d\u003c/code\u003e\u003c/a\u003e Cross-compile avoids maturin v1.12 build-details.json error\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.7...3.11.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.2.3 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.o...\n\n_Description has been truncated_","html_url":"https://github.com/Canner/wren-engine/pull/1590","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Canner%2Fwren-engine/issues/1590","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1590/packages"},{"uuid":"4334127464","node_id":"PR_kwDOOjuZ687V4G7e","number":1207,"state":"closed","title":"chore(deps)(deps-dev): update testcontainers requirement from \u003e=4.0.0 to \u003e=4.14.2","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-20T19:58:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T08:07:12.000Z","updated_at":"2026-06-20T19:58:31.000Z","time_to_close":4708269,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.0.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.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 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/herringbonedev/Herringbone/pull/1207","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/herringbonedev%2FHerringbone/issues/1207","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1207/packages"},{"uuid":"4330291032","node_id":"PR_kwDOH5nOwc7VsZWA","number":243,"state":"closed","title":"Bump the uv-version group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-03T07:13:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-26T07:14:34.000Z","updated_at":"2026-05-03T07:13:54.000Z","time_to_close":604758,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-version","update_count":8,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"google-api-python-client","old_version":"2.191.0","new_version":"2.194.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-cloud-secret-manager","old_version":"2.26.0","new_version":"2.27.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"confluent-kafka","old_version":"2.13.2","new_version":"2.14.0","repository_url":"https://github.com/confluentinc/confluent-kafka-python"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-version group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.191.0` | `2.194.0` |\n| [google-cloud-secret-manager](https://github.com/googleapis/google-cloud-python) | `2.26.0` | `2.27.0` |\n| [confluent-kafka](https://github.com/confluentinc/confluent-kafka-python) | `2.13.2` | `2.14.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.10` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-api-python-client` from 2.191.0 to 2.194.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-api-python-client/releases\"\u003egoogle-api-python-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.194.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.193.0...v2.194.0\"\u003e2.194.0\u003c/a\u003e (2026-04-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealloydb:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eanalyticsadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapigee:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapikeys:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eappengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eartifactregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquerydatatransfer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003echat:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbilling:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbuild:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclouddeploy:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudkms:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudsearch:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudtasks:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econfig:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econnectors:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtactcenterinsights:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatamigration:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\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/googleapis/google-api-python-client/commit/10436ecbe9201c8af9ad235a05d77e5e05e6462e\"\u003e\u003ccode\u003e10436ec\u003c/code\u003e\u003c/a\u003e chore(main): release 2.194.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e\u003ccode\u003e2d0b3b1\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2737\"\u003e#2737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e\u003ccode\u003e4b1cfc7\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2735\"\u003e#2735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a82af07571da6c3c0ccfd2d9cf234785c3783e57\"\u003e\u003ccode\u003ea82af07\u003c/code\u003e\u003c/a\u003e chore: Migrate gsutil usage to gcloud storage (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2705\"\u003e#2705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003e\u003ccode\u003eb6b55b6\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2732\"\u003e#2732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/00266153237185a9de250645f7dcc082b9189ce1\"\u003e\u003ccode\u003e0026615\u003c/code\u003e\u003c/a\u003e chore(main): release 2.193.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2728\"\u003e#2728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003e\u003ccode\u003ea7eaabb\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2729\"\u003e#2729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e\u003ccode\u003e3f48f2b\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2727\"\u003e#2727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/22028738645b236f967a47000b57dd823e722c12\"\u003e\u003ccode\u003e2202873\u003c/code\u003e\u003c/a\u003e chore(main): release 2.192.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2726\"\u003e#2726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/45a338522e6c484029833b3bcf7fe73c58648e55\"\u003e\u003ccode\u003e45a3385\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2725\"\u003e#2725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.191.0...v2.194.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-secret-manager` from 2.26.0 to 2.27.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-secret-manager's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-firestore: v2.27.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-firestore-v2.26.0...google-cloud-firestore-v2.27.0\"\u003ev2.27.0\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-secret-manager's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v2.26.0...google-cloud-documentai-v2.27.0\"\u003e2.27.0\u003c/a\u003e (2024-04-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Chunk header and footer in Doc AI external proto (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep the API doc up-to-date with recent changes (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f19d85b8083b57c2e60b8cd257d3e1f419e7eed\"\u003e\u003ccode\u003e0f19d85\u003c/code\u003e\u003c/a\u003e chore: fix missing heading in changelog (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16189\"\u003e#16189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a16755d8e2fcd941e94cc967a5acd72c95eb7644\"\u003e\u003ccode\u003ea16755d\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T111101Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9694ce943e2b7f4729b78e80b25a6729bfb292ca\"\u003e\u003ccode\u003e9694ce9\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T114549Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c4a35cf59cc2d82243fdd6e2bd5cab981f3a1467\"\u003e\u003ccode\u003ec4a35cf\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T132735Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16146\"\u003e#16146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/640a86b3ba70b191984c3edaded68ddbe5e540d8\"\u003e\u003ccode\u003e640a86b\u003c/code\u003e\u003c/a\u003e chore: librarian update image pull request: 20260325T221325Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16175\"\u003e#16175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/341284c80e2f09149467541767499f30b369df55\"\u003e\u003ccode\u003e341284c\u003c/code\u003e\u003c/a\u003e chore(deps): bump pyasn1 from 0.6.1 to 0.6.3 in /packages/sqlalchemy-spanner ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ec9262c45055d3d2b596cdde1649d3ce90b4347d\"\u003e\u003ccode\u003eec9262c\u003c/code\u003e\u003c/a\u003e fix: Allow Protobuf 7.x, require Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16102\"\u003e#16102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/cf50cea185f2ad4763a14f1f0c14ca50fc2fe418\"\u003e\u003ccode\u003ecf50cea\u003c/code\u003e\u003c/a\u003e feat(firestore): literals pipeline stage (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16028\"\u003e#16028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4b400faca2fcd40f68a812dc6f47a79d0cbf7433\"\u003e\u003ccode\u003e4b400fa\u003c/code\u003e\u003c/a\u003e chore: librarian generate pull request: 20260325T142358Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16166\"\u003e#16166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-secret-manager-v2.26.0...google-cloud-secret-manager-v2.27.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `confluent-kafka` from 2.13.2 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/releases\"\u003econfluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/blob/master/CHANGELOG.md\"\u003econfluent-kafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 - 2026-04-01\u003c/h2\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/commit/a2f066da6bbf28d3285b1c6b4764ad68967aac55\"\u003e\u003ccode\u003ea2f066d\u003c/code\u003e\u003c/a\u003e v2.14.0 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d80ff360bfc01690c5c59d24ff1f3fdfa4505867\"\u003e\u003ccode\u003ed80ff36\u003c/code\u003e\u003c/a\u003e Add current release candidate to setup_all_versions.py (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/ea948daf03c959984459dd5b2971ca270078a270\"\u003e\u003ccode\u003eea948da\u003c/code\u003e\u003c/a\u003e v2.14.0rc1 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2224\"\u003e#2224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/73c7953fbc0fbb80af6335078500d9b7cfcc8296\"\u003e\u003ccode\u003e73c7953\u003c/code\u003e\u003c/a\u003e Avoid redundant lookup_schema call in _get_reader_schema when use_schema_id i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/410a59c8ca81fdf06fbc38dc2b86947e15dcb8da\"\u003e\u003ccode\u003e410a59c\u003c/code\u003e\u003c/a\u003e Add enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/f3af6aa5a65aa7754b919d988f30d48dbce96f36\"\u003e\u003ccode\u003ef3af6aa\u003c/code\u003e\u003c/a\u003e Remove callback wrapping for oauth_cb in AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d313cac869b3e0f6810a7b1e1127f436115199f6\"\u003e\u003ccode\u003ed313cac\u003c/code\u003e\u003c/a\u003e Fix return type signature for context managers (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/40e8a6fa9db68405cbed31c877d4e92ffe25aaf2\"\u003e\u003ccode\u003e40e8a6f\u003c/code\u003e\u003c/a\u003e Implement async context manager protocol for AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/0ed043f459b0b6e557d53111ea1afccee265378f\"\u003e\u003ccode\u003e0ed043f\u003c/code\u003e\u003c/a\u003e Fix typo (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/1691\"\u003e#1691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/cc164a1cf0c6f5bb285130fd0448acdcb0051f92\"\u003e\u003ccode\u003ecc164a1\u003c/code\u003e\u003c/a\u003e DGS-23025 Add AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/compare/v2.13.2...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\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/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\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/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\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.4 to 0.15.10\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.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.10\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.10/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- 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.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\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/252f76102a618bff6537b6c53c316ca3837f4abf\"\u003e\u003ccode\u003e252f761\u003c/code\u003e\u003c/a\u003e Bump 0.15.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24519\"\u003e#24519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/37a1ec8bb8e30955787b0cdf6e97f7f2254dba7f\"\u003e\u003ccode\u003e37a1ec8\u003c/code\u003e\u003c/a\u003e [ty] Fix assignability of intersections with bounded typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24502\"\u003e#24502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f518cc9ca0c830773dd49c3964eb5e49d52c8aed\"\u003e\u003ccode\u003ef518cc9\u003c/code\u003e\u003c/a\u003e [ty] Allow partially stringified \u003ccode\u003etype[…]\u003c/code\u003e annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24518\"\u003e#24518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16c4090d0a711b9c0523b932014f3daf140f35bc\"\u003e\u003ccode\u003e16c4090\u003c/code\u003e\u003c/a\u003e docs: fix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/99d97bd72f1934ac2af93e52468c10ef1c7a1a4e\"\u003e\u003ccode\u003e99d97bd\u003c/code\u003e\u003c/a\u003e [ty] Tighten up a few edge cases in \u003ccode\u003eConcatenate\u003c/code\u003e type-expression parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2714e345bdd64a5baae3844c0d25db7b0b9fe330\"\u003e\u003ccode\u003e2714e34\u003c/code\u003e\u003c/a\u003e [ty] Enable \u003ccode\u003epull-diagnostics\u003c/code\u003e by default in E2E tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24516\"\u003e#24516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8bc700722ab1b7272a4d724839da7c569b349d4\"\u003e\u003ccode\u003ed8bc700\u003c/code\u003e\u003c/a\u003e LSP: Add support for custom extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a45f96d65dbd4f958b07accd718f8d2af48cb956\"\u003e\u003ccode\u003ea45f96d\u003c/code\u003e\u003c/a\u003e [ty] stop special-casing str constructor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24514\"\u003e#24514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87a0f01cfd016e0297ef05ab638cde006bf8d947\"\u003e\u003ccode\u003e87a0f01\u003c/code\u003e\u003c/a\u003e [ruff] Treat f-string interpolation as potential side effect in RUF019 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9ba8489b8d1f1fd5fd66887a74d5f2f58f733d4\"\u003e\u003ccode\u003ee9ba848\u003c/code\u003e\u003c/a\u003e [ty] Fix excess subscript argument inference for non-generic types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24354\"\u003e#24354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and securit...\n\n_Description has been truncated_","html_url":"https://github.com/navikt/dvh-airflow-kafka/pull/243","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/navikt%2Fdvh-airflow-kafka/issues/243","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/243/packages"},{"uuid":"4315416663","node_id":"PR_kwDOR6S1x87U8oRn","number":63,"state":"closed","title":"deps(deps): bump the minor-and-patch group across 1 directory with 27 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T07:22:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-23T10:55:54.000Z","updated_at":"2026-05-11T07:22:38.000Z","time_to_close":1542401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"minor-and-patch","update_count":27,"packages":[{"name":"fastapi","old_version":"0.115.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.30.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"arq","old_version":"0.26.3","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"curl-cffi","old_version":"0.7.3","new_version":"0.15.0","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"camoufox","old_version":"0.4.4","new_version":"0.4.11","repository_url":"https://github.com/daijro/camoufox"},{"name":"patchright","old_version":"1.52.5","new_version":"1.59.1","repository_url":"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python"},{"name":"pydantic","old_version":"2.10.0","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-levenshtein","old_version":"0.25.0","new_version":"0.27.3","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"tldextract","old_version":"5.1.0","new_version":"5.3.1","repository_url":"https://github.com/john-kurkowski/tldextract"},{"name":"celery","old_version":"5.4.0","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"sqlalchemy","old_version":"2.0.30","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"imagehash","old_version":"4.3.1","new_version":"4.3.2","repository_url":"https://github.com/JohannesBuchner/imagehash"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"sentry-sdk","old_version":"2.22.0","new_version":"2.58.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"prometheus-client","old_version":"0.21.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"fakeredis","old_version":"2.26.1","new_version":"2.35.1","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"moto","old_version":"5.0.0","new_version":"5.2.0","repository_url":"https://github.com/getmoto/moto"},{"name":"testcontainers","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"respx","old_version":"0.21.1","new_version":"0.23.1","repository_url":"https://github.com/lundberg/respx"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"mypy","old_version":"1.11.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.6.0","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pip-audit","old_version":"2.7.3","new_version":"2.10.0","repository_url":"https://github.com/pypa/pip-audit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.136.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.0` | `0.46.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [arq](https://github.com/python-arq/arq) | `0.26.3` | `0.28.0` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.7.3` | `0.15.0` |\n| [camoufox](https://github.com/daijro/camoufox) | `0.4.4` | `0.4.11` |\n| [patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python) | `1.52.5` | `1.59.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.10.0` | `2.13.3` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.25.0` | `0.27.3` |\n| [tldextract](https://github.com/john-kurkowski/tldextract) | `5.1.0` | `5.3.1` |\n| [celery](https://github.com/celery/celery) | `5.4.0` | `5.6.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.30` | `2.0.49` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [imagehash](https://github.com/JohannesBuchner/imagehash) | `4.3.1` | `4.3.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.12` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.14.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.22.0` | `2.58.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.0` | `0.25.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.26.1` | `2.35.1` |\n| [moto](https://github.com/getmoto/moto) | `5.0.0` | `5.2.0` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.9.0` | `4.14.2` |\n| [respx](https://github.com/lundberg/respx) | `0.21.1` | `0.23.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.11.0` | `1.20.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.6.0` | `0.15.12` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.7.3` | `2.10.0` |\n\n\nUpdates `fastapi` from 0.115.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.30.0 to 0.46.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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\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/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.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\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\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/2913\"\u003e#2913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Explicitly start ASGI run with empty context\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003cp\u003eYou can quit Uvicorn now. We heard you, \u003ca href=\"https://github.com/pamelafox\"\u003e\u003ccode\u003e@​pamelafox\u003c/code\u003e\u003c/a\u003e - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e for the fix 🙏). \u003ca href=\"https://x.com/pamelafox/status/2039097686155227623\"\u003eSee the tweet\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\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/b224045f5900b7f766743bcb16ba9fc3adea2606\"\u003e\u003ccode\u003eb224045\u003c/code\u003e\u003c/a\u003e Version 0.46.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2918\"\u003e#2918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7375b5bf66d962186d663e85615d4b4d956bf880\"\u003e\u003ccode\u003e7375b5b\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d438fb16fe2d23c7bbc2ca7094645cff1f116458\"\u003e\u003ccode\u003ed438fb1\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3e6b96446653d0156434bce529a14c80764c9eda\"\u003e\u003ccode\u003e3e6b964\u003c/code\u003e\u003c/a\u003e Support \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\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2c423bd82be169459ea254a61476de34767e0326\"\u003e\u003ccode\u003e2c423bd\u003c/code\u003e\u003c/a\u003e Version 0.45.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7f027f8e25e47668a9c2ce8b5c21b35054c48d02\"\u003e\u003ccode\u003e7f027f8\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/73a80c3cc87de269ed016e584a25e585ae6f2b44\"\u003e\u003ccode\u003e73a80c3\u003c/code\u003e\u003c/a\u003e Add \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\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/45c0b568d38e9bf4f2f036bc2d79eb98b0e72f72\"\u003e\u003ccode\u003e45c0b56\u003c/code\u003e\u003c/a\u003e Revert empty context for ASGI runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/850d92656de0cb5859ee5f6ba252e19ad3d38989\"\u003e\u003ccode\u003e850d926\u003c/code\u003e\u003c/a\u003e Raise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/fdcacb4b83bc686ea1ba9e50ffe5b8cfe49b3e00\"\u003e\u003ccode\u003efdcacb4\u003c/code\u003e\u003c/a\u003e Accept \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\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.30.0...0.46.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.29.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003eSupport Python 3.13 and PostgreSQL 17.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImplement GSSAPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1d4e5680 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1122\"\u003e#1122\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement SSPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1aab2094 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1128\"\u003e#1128\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd initial typings\n(by \u003ca href=\"https://github.com/bryanforbes\"\u003e\u003ccode\u003e@​bryanforbes\u003c/code\u003e\u003c/a\u003e in d42432bf for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1127\"\u003e#1127\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow building with Cython 3\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arq` from 0.26.3 to 0.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-arq/arq/releases\"\u003earq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.28.0 2026-04-16\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/522\"\u003epython-arq/arq#522\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-arq/arq/compare/v0.27.0...v0.28.0\"\u003ehttps://github.com/python-arq/arq/compare/v0.27.0...v0.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.27.0 2026-02-02\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13, remove advertised support for Python 3.8 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/514\"\u003epython-arq/arq#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eApply lint and format for Python 3.9 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/515\"\u003epython-arq/arq#515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse uv, update actions by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/516\"\u003epython-arq/arq#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate project URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/517\"\u003epython-arq/arq#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eretry_on_error\u003c/code\u003e type annotation by \u003ca href=\"https://github.com/armicron\"\u003e\u003ccode\u003e@​armicron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/446\"\u003epython-arq/arq#446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix wrong reference in \u003ccode\u003eRetry\u003c/code\u003e docstring by \u003ca href=\"https://github.com/PassionateBytes\"\u003e\u003ccode\u003e@​PassionateBytes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/507\"\u003epython-arq/arq#507\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/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/514\"\u003epython-arq/arq#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/armicron\"\u003e\u003ccode\u003e@​armicron\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/446\"\u003epython-arq/arq#446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PassionateBytes\"\u003e\u003ccode\u003e@​PassionateBytes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/507\"\u003epython-arq/arq#507\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-arq/arq/compare/v0.26.3...v0.27.0\"\u003ehttps://github.com/python-arq/arq/compare/v0.26.3...v0.27.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-arq/arq/blob/main/HISTORY.rst\"\u003earq's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev0.28.0 (2026-04-16)\n....................\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/522\"\u003e#522\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ev0.27.0 (2026-01-30)\n....................\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix wrong reference in \u003ccode\u003eRetry\u003c/code\u003e docstring by \u003ca href=\"https://github.com/PassionateBytes\"\u003e\u003ccode\u003e@​PassionateBytes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/507\"\u003e#507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix retry_on_error type annotation by \u003ca href=\"https://github.com/armicron\"\u003e\u003ccode\u003e@​armicron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/446\"\u003e#446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, remove advertised support for Python 3.8 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/514\"\u003e#514\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/5ee4b48cf6faf4dc181f1ccb76dfb1bc1fedf9bf\"\u003e\u003ccode\u003e5ee4b48\u003c/code\u003e\u003c/a\u003e Prepare release 0.28.0 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/5c725217832893c574e0bf215948c42d00d67bff\"\u003e\u003ccode\u003e5c72521\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/fda407c4cb5ec2e6f2b13c2aa9671f86e7a0f8c5\"\u003e\u003ccode\u003efda407c\u003c/code\u003e\u003c/a\u003e Prepare release 0.27.0 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/518\"\u003e#518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/633bba3b464cc1f162d0272a073e1c04d2b9898d\"\u003e\u003ccode\u003e633bba3\u003c/code\u003e\u003c/a\u003e Fix wrong reference in \u003ccode\u003eRetry\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/1ceb4351441b602e2d942daf57540adfe90acf38\"\u003e\u003ccode\u003e1ceb435\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eretry_on_error\u003c/code\u003e type annotation (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/2354d8f52982f6e29b9ba67fd4d7e6017099d7b8\"\u003e\u003ccode\u003e2354d8f\u003c/code\u003e\u003c/a\u003e Update project URLs (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/4c0602d1c49dfb364c333a3c3a3b062387c2a896\"\u003e\u003ccode\u003e4c0602d\u003c/code\u003e\u003c/a\u003e Use uv, update actions (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/4636c86bae2fb42796b60f578e7772f42c84a08a\"\u003e\u003ccode\u003e4636c86\u003c/code\u003e\u003c/a\u003e Apply lint and format for Python 3.9 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/a8b4c1706548981eab217dc9256a837ebbe73975\"\u003e\u003ccode\u003ea8b4c17\u003c/code\u003e\u003c/a\u003e Add support for Python 3.13, remove advertised support for Python 3.8 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/0e3295b0dfda2899153a7012d642cdf077a463b7\"\u003e\u003ccode\u003e0e3295b\u003c/code\u003e\u003c/a\u003e [skip ci] add maintenance notice to readme\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-arq/arq/compare/v0.26.3...v0.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `curl-cffi` from 0.7.3 to 0.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lexiforest/curl_cffi/releases\"\u003ecurl-cffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.15.0\u003c/h2\u003e\n\u003cp\u003e🎉 Another release with significant changes!\u003c/p\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ehttp/3 fingerprints, added for Chrome 145, 146 and Firefox 147. To verify http3 fingerprints, visit \u003ca href=\"https://fp.impersonate.pro\"\u003ehttps://fp.impersonate.pro\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ehttp/3 proxy support with socks5 udp proxy server.\u003c/li\u003e\n\u003cli\u003eNew CLI tool, just called \u003ccode\u003ecurl-cffi\u003c/code\u003e, easier http debugging for both humans and agents. See \u003ca href=\"https://curl-cffi.readthedocs.io/en/latest/cli/_index.html\"\u003edocs\u003c/a\u003e. We also added a \u003ca href=\"https://github.com/lexiforest/curl_cffi/blob/main/skills/imp-fetch/SKILL.md\"\u003eskill\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCompatibility optimization, curl_cffi is now fully static. Especially for macOS, no dependencies needed and compatible with macOS since 11.0.\u003c/li\u003e\n\u003cli\u003e⚠️ Security improvement. If you are accepting urls from others and returning the response to them, you are vulnerable to redirection-based SSRF. Disable \u003ccode\u003eallow_redirects\u003c/code\u003e or at lease set \u003ccode\u003eallow_redirects=\u0026quot;safe\u0026quot;\u003c/code\u003e, see the \u003ca href=\"https://github.com/lexiforest/curl_cffi/security/advisories/GHSA-qw2m-4pqf-rmpp\"\u003eadvisory\u003c/a\u003e and the \u003ca href=\"https://curl-cffi.readthedocs.io/en/latest/security.html#ssrf-protection\"\u003edocs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePerformance optimization: WebSocket improvement and free-threading support.\u003c/li\u003e\n\u003cli\u003eAndroid is officially supported, closing a 3-years-old issue.\u003c/li\u003e\n\u003cli\u003eNew impersonation behaviors, the cookie header behavior and POST boundary are now made exactly the same as browsers. These are not part of tls or http binary fingerprints, but are exploited by WAFs, too.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe list of proxy vendors with udp sock5 support is very limited, so I set up 2 servers for testing. You can simply run:\u003c/p\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl-cffi get https://fp.impersonate.pro/api/http3 --proxy socks5://imp:curl-cffi@206.189.95.199:1080 --http3-only\r\ncurl-cffi get https://fp.impersonate.pro/api/http3 --proxy socks5://imp:curl-cffi@24.144.88.46:1080 --http3-only\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you need more udp socks5 servers from us, click the 👀 emoji to vote.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix some of the extension values being overwritten caused by applying… by \u003ca href=\"https://github.com/enter-a-new-username3\"\u003e\u003ccode\u003e@​enter-a-new-username3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/680\"\u003elexiforest/curl_cffi#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypehint session return values and internal functions by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/664\"\u003elexiforest/curl_cffi#664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd free threaded builds by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/697\"\u003elexiforest/curl_cffi#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAsync WebSocket: Docs, Safety \u0026amp; Performance Improvements by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/692\"\u003elexiforest/curl_cffi#692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Android by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/699\"\u003elexiforest/curl_cffi#699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd type hint for request responses by \u003ca href=\"https://github.com/MFTabriz\"\u003e\u003ccode\u003e@​MFTabriz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/690\"\u003elexiforest/curl_cffi#690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResponse hint fix for \u0026lt; 3.13 by \u003ca href=\"https://github.com/novitae\"\u003e\u003ccode\u003e@​novitae\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/546\"\u003elexiforest/curl_cffi#546\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix BufferError Crash by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/700\"\u003elexiforest/curl_cffi#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWS: Small Optimizations by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/702\"\u003elexiforest/curl_cffi#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for retrying by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/689\"\u003elexiforest/curl_cffi#689\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWS: Update Docs by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/705\"\u003elexiforest/curl_cffi#705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable http3 fingerprints by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/712\"\u003elexiforest/curl_cffi#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for loongarch64 by \u003ca href=\"https://github.com/wxpppp\"\u003e\u003ccode\u003e@​wxpppp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/716\"\u003elexiforest/curl_cffi#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake the CLI more useful by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/726\"\u003elexiforest/curl_cffi#726\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option to mitigate SSRF by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/727\"\u003elexiforest/curl_cffi#727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose http3 fingerprints customization by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/728\"\u003elexiforest/curl_cffi#728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd body to response.request by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/710\"\u003elexiforest/curl_cffi#710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix Makefile issue by \u003ca href=\"https://github.com/p9s\"\u003e\u003ccode\u003e@​p9s\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/655\"\u003elexiforest/curl_cffi#655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for READFUNCTION by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/698\"\u003elexiforest/curl_cffi#698\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/enter-a-new-username3\"\u003e\u003ccode\u003e@​enter-a-new-username3\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/680\"\u003elexiforest/curl_cffi#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MFTabriz\"\u003e\u003ccode\u003e@​MFTabriz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/690\"\u003elexiforest/curl_cffi#690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wxpppp\"\u003e\u003ccode\u003e@​wxpppp\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/716\"\u003elexiforest/curl_cffi#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/p9s\"\u003e\u003ccode\u003e@​p9s\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/655\"\u003elexiforest/curl_cffi#655\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/lexiforest/curl_cffi/compare/v0.14.0...v0.15.0\"\u003ehttps://github.com/lexiforest/curl_cffi/compare/v0.14.0...v0.15.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/0e219c43701f955436ef4a20486a7237a417dbc6\"\u003e\u003ccode\u003e0e219c4\u003c/code\u003e\u003c/a\u003e cli: add --http3-only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/21ca4f0e0fdc16401949dbd939c9e1c0973d6e85\"\u003e\u003ccode\u003e21ca4f0\u003c/code\u003e\u003c/a\u003e Optimize CLI output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/884fffd752c1ac1890f74eb87ef682b7a17f486a\"\u003e\u003ccode\u003e884fffd\u003c/code\u003e\u003c/a\u003e Bump version to 0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/754b43d76ce07db943d656524ee8c2432e99b74e\"\u003e\u003ccode\u003e754b43d\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/6e61a25d13edfe062554310913c1fd1c19b9e5af\"\u003e\u003ccode\u003e6e61a25\u003c/code\u003e\u003c/a\u003e Add support for READFUNCTION (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/698\"\u003e#698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/5eb13bc91f2a6f5014d163ea9c0b89a3b70c8cab\"\u003e\u003ccode\u003e5eb13bc\u003c/code\u003e\u003c/a\u003e fix Makefile issue (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/39c046c548a490c2f2fed8c9c82ed6a5ab39ad05\"\u003e\u003ccode\u003e39c046c\u003c/code\u003e\u003c/a\u003e Store request body (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/710\"\u003e#710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/06237c9172815071678c920afb75dfd1ab6db32a\"\u003e\u003ccode\u003e06237c9\u003c/code\u003e\u003c/a\u003e Expose http3 fingerprints customization (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/5686baf38d6d5128b80b83573158ee1241dff4da\"\u003e\u003ccode\u003e5686baf\u003c/code\u003e\u003c/a\u003e Add option to mitigate SSRF (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/73b2b1694324a426ba8ddc61a602867d1d764552\"\u003e\u003ccode\u003e73b2b16\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lexiforest/curl_cffi/compare/v0.7.3...v0.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `camoufox` from 0.4.4 to 0.4.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/daijro/camoufox/releases\"\u003ecamoufox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHardware Spoofing\u003c/h2\u003e\n\u003cp\u003eThis release has not been tested yet. Please don't use unless you know what you are doing :)\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\u003eSee full diff in \u003ca href=\"https://github.com/daijro/camoufox/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `patchright` from 1.52.5 to 1.59.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/releases\"\u003epatchright's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.59.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.58.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.57.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.56.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.55.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\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\u003eSee full diff in \u003ca href=\"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/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.10.0 to 2.13.3\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.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\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd zizmor for GitHub Actions workflow linting 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/13039\"\u003e#13039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jiter to v0.14.0 to fix a segmentation fault on musl Linux 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/13064\"\u003e#13064\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/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.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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow default factories of private attributes to take validated model data 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/13013\"\u003e#13013\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9e9a11132c980c4ec84ff6d2df06d4c1a55ca8f3\"\u003e\u003ccode\u003e9e9a111\u003c/code\u003e\u003c/a\u003e Fix backported test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1ec8c6aa0cae1c78409c6f31af738a24e16c7124\"\u003e\u003ccode\u003e1ec8c6a\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fb4f2044436e9fa4ff9745479ce263016a99c4d6\"\u003e\u003ccode\u003efb4f204\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ca3ddd1149bd3b14273922a29da174804496a055\"\u003e\u003ccode\u003eca3ddd1\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/000e823a3ab7545b0c6064fde34effdcd02044ab\"\u003e\u003ccode\u003e000e823\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d45d8be3ffb6dfc6d0c64da6980140c91ff841fb\"\u003e\u003ccode\u003ed45d8be\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/54aca609ce58e73dfe1c681d93432fbe3a4621da\"\u003e\u003ccode\u003e54aca60\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/46bf4fa648af3a1fbf4603a37f210e9d9c618357\"\u003e\u003ccode\u003e46bf4fa\u003c/code\u003e\u003c/a\u003e Fix Pydantic release workflow (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13067\"\u003e#13067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1b359edab09c623464d23c6fd2503ae5ff276d43\"\u003e\u003ccode\u003e1b359ed\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13065\"\u003e#13065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b1bf19445d8ac144a7a0e82674d2d87eebab6c18\"\u003e\u003ccode\u003eb1bf194\u003c/code\u003e\u003c/a\u003e Fix model equality when using runtime \u003ccode\u003eextra\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13062\"\u003e#13062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.10.0...v2.13.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-levenshtein` from 0.25.0 to 0.27.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/releases\"\u003epython-levenshtein's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 0.27.3\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.27.1\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix build with \u003ccode\u003escikit-build-core\u003c/code\u003e \u003ccode\u003ev0.11\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eupgrade to \u003ccode\u003eCython==3.0.12\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.26.1\u003c/h2\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing mac os wheels\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.26.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for Python 3.13\u003c/li\u003e\n\u003cli\u003edrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.25.1\u003c/h2\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix potentially incorrect results of \u003ccode\u003ejaro_winkler\u003c/code\u003e when using high prefix weights\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/rapidfuzz/python-Levenshtein/blob/main/HISTORY.md\"\u003epython-levenshtein's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ev0.27.3\u003c/h3\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.27.1\u003c/h3\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003efix build with \u003ccode\u003escikit-build-core\u003c/code\u003e \u003ccode\u003ev0.11\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eupgrade to \u003ccode\u003eCython==3.0.12\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.26.1\u003c/h3\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing mac os wheels\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.26.0\u003c/h3\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for Python 3.13\u003c/li\u003e\n\u003cli\u003edrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.25.1\u003c/h3\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003efix potentially incorrect results of \u003ccode\u003ejaro_winkler\u003c/code\u003e when using high prefix weights\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/23fffc235b9290c3288ece63a9463d92b65fb17e\"\u003e\u003ccode\u003e23fffc2\u003c/code\u003e\u003c/a\u003e add support for python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/e46eaff43c00aac3e80266b1a6c503af97bcc817\"\u003e\u003ccode\u003ee46eaff\u003c/code\u003e\u003c/a\u003e use pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/3bbf7ec56df5c708977104827129767edebbd1f6\"\u003e\u003ccode\u003e3bbf7ec\u003c/code\u003e\u003c/a\u003e remove duplicated license information\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/ec1a77524a8c7277cbcd3162cf6deaabfbfd9a9c\"\u003e\u003ccode\u003eec1a775\u003c/code\u003e\u003c/a\u003e rename license file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/26cb183f4ef394af6c12817f09b3fbda33bb3499\"\u003e\u003ccode\u003e26cb183\u003c/code\u003e\u003c/a\u003e update to 0.27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/ff4cd4ea9b15c6d1c9ba79a2266fb7760879fc4c\"\u003e\u003ccode\u003eff4cd4e\u003c/code\u003e\u003c/a\u003e Update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/3ba4bb30f8bda276e070e3416f6905d77ddde633\"\u003e\u003ccode\u003e3ba4bb3\u003c/code\u003e\u003c/a\u003e update installer version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/abd121defa4d40aa1d3d65b5d768067c5ac602ed\"\u003e\u003ccode\u003eabd121d\u003c/code\u003e\u003c/a\u003e update Levenshtein version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/bb6eff3005f180853b13e86356e103368c92c3e6\"\u003e\u003ccode\u003ebb6eff3\u003c/code\u003e\u003c/a\u003e tag 0.25.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/compare/v0.25.0...v0.27.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tldextract` from 5.1.0 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-kurkowski/tldextract/releases\"\u003etldextract's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\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/bmos\"\u003e\u003ccode\u003e@​bmos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/pull/358\"\u003ejohn-kurkowski/tldextract#358\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elliotwutingfeng\"\u003e\u003ccode\u003e@​elliotwutingfeng\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\"\u003ehttps://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e5.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd result field \u003ccode\u003eregistry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eTo complement the existing public suffix field \u003ccode\u003esuffix\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_registry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003eregistered_domain\u003c/code\u003e property\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e instead, which has the same behavior\nbut a more accurate name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eFix missing \u003ccode\u003ereverse_domain_name\u003c/code\u003e property in CLI \u003ccode\u003e--json\u003c/code\u003e output (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/a545c67d87223616fc13e90692886b3ca9af18bb\"\u003e\u003ccode\u003ea545c67\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMisc.\n\u003cul\u003e\n\u003cli\u003eExpand internal \u003ccode\u003esuffix_index\u003c/code\u003e return type to be richer than bools, and\ninclude the registry suffix during trie traversal\n(\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski\"\u003e\u003ccode\u003e@​john-kurkowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.2.0...5.3.0\"\u003ehttps://github.com/john-kurkowski/tldextract/compare/5.2.0...5.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ereverse_domain_name\u003c/code\u003e result property (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eExtend exported public interface with \u003ccode\u003eExtractResult\u003c/code\u003e and \u003ccode\u003eupdate\u003c/code\u003e (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/36ff658c53b510c5d56f8af235c8b08ce3c512f5\"\u003e\u003ccode\u003e36ff658\u003c/code\u003e\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThese were always meant to be public. Eases user import.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eDocument result fields\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/john-kurkowski/tldextract/blob/master/CHANGELOG.md\"\u003etldextract's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2025-12-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.3.0 (2025-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd result field \u003ccode\u003eregistry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eTo complement the existing public suffix field \u003ccode\u003esuffix\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_registry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003eregistered_domain\u003c/code\u003e property\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e instead, which has the same behavior\nbut a more accurate name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eFix missing \u003ccode\u003ereverse_domain_name\u003c/code\u003e property in CLI \u003ccode\u003e--json\u003c/code\u003e output (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/a545c67d87223616fc13e90692886b3ca9af18bb\"\u003e\u003ccode\u003ea545c67\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMisc.\n\u003cul\u003e\n\u003cli\u003eExpand internal \u003ccode\u003esuffix_index\u003c/code\u003e return type to be richer than bools, and\ninclude the registry suffix during trie traversal\n(\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.2.0 (2025-04-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ereverse_domain_name\u003c/code\u003e result property (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eExtend exported public interface with \u003ccode\u003eExtractResult\u003c/code\u003e and \u003ccode\u003eupdate\u003c/code\u003e (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/36ff658c53b510c5d56f8af235c8b08ce3c512f5\"\u003e\u003ccode\u003e36ff658\u003c/code\u003e\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThese were always meant to be public. Eases user import.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eDocument result fields\u003c/li\u003e\n\u003cli\u003eNote all return values\u003c/li\u003e\n\u003cli\u003eColocate usage in the usage section\u003c/li\u003e\n\u003cli\u003eLink to private domain docs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMisc.\n\u003cul\u003e\n\u003cli\u003eUpdate bundled snapshot\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.1.3 (2024-11-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eReduce logging errors (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/921a82523c0e4403d21d50b2c3410d9af43520ac\"\u003e\u003ccode\u003e921a825\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/340\"\u003e#340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate bundled snapshot\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eClarify how to use your own definitions\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/john-kurkowski/tldextract/commit/361f12febf901ef48215d0380551d86c7f0608ac\"\u003e\u003ccode\u003e361f12f\u003c/code\u003e\u003c/a\u003e 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/34482ce70cb4ca7210d39fefb57b8b1ee34bc853\"\u003e\u003ccode\u003e34482ce\u003c/code\u003e\u003c/a\u003e Upgrade to newer setuptools-scm usage instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/b9a78148f1551c4f3c3d441c07cafd34207030cc\"\u003e\u003ccode\u003eb9a7814\u003c/code\u003e\u003c/a\u003e Fix license field deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/e397b6cdff10e89cbf66e758c8fcfa31ede2dabd\"\u003e\u003ccode\u003ee397b6c\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/77b10ba7fca31a827fc678dbff34897663f2f611\"\u003e\u003ccode\u003e77b10ba\u003c/code\u003e\u003c/a\u003e Support Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/49c59d9f1ff9e25fce73ba8d9cde5274f7117c2b\"\u003e\u003ccode\u003e49c59d9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Pin requests-file during typecheck\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/6e49ea583c85a80e82ae5554cd615e8ee305a026\"\u003e\u003ccode\u003e6e49ea5\u003c/code\u003e\u003c/a\u003e Reorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues...\n\n_Description has been truncated_","html_url":"https://github.com/PrajwalJahagirdar/hydrascraper/pull/63","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrajwalJahagirdar%2Fhydrascraper/issues/63","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/63/packages"},{"uuid":"4293580585","node_id":"PR_kwDOR9avIM7T1yta","number":15,"state":"open","title":"chore(api)(deps): Bump the python-minor-and-patch group in /apps/api with 6 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T06:33:13.000Z","updated_at":"2026-04-20T06:33:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(api)(deps): Bump","group_name":"python-minor-and-patch","update_count":6,"packages":[{"name":"fastapi","old_version":"0.135.3","new_version":"0.136.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"alembic","old_version":"1.14.0","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"python-ulid","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/mdomke/python-ulid"},{"name":"prometheus-client","old_version":"0.21.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"testcontainers","old_version":"4.8.2","new_version":"4.14.2"}],"path":"/apps/api","ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group in /apps/api with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.136.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.14.0` | `1.18.4` |\n| [python-ulid](https://github.com/mdomke/python-ulid) | `3.0.0` | `3.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.1` | `0.25.0` |\n| [testcontainers[postgresql]](https://github.com/testcontainers/testcontainers-python) | `4.8.2` | `4.14.2` |\n\nUpdates `fastapi` from 0.135.3 to 0.136.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/708606c982cf35718cb2214c0bb9261cf548f042\"\u003e\u003ccode\u003e708606c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/13be6a3a0f12d3f36c286196ef555dd51dc09edb\"\u003e\u003ccode\u003e13be6a3\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b264878d71b2dc0e9e0f90ef15459d4302a7f9c\"\u003e\u003ccode\u003e4b26487\u003c/code\u003e\u003c/a\u003e ⬆️ Support free-threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15149\"\u003e#15149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f796c346a8537876de43729ff1ca1409d4648893\"\u003e\u003ccode\u003ef796c34\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/09d1d1cb7073b3c7bd1f58fcf6faefa9b2c29de4\"\u003e\u003ccode\u003e09d1d1c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae4e45c5cc20a1e1503fbcab2369821d188feb09\"\u003e\u003ccode\u003eae4e45c\u003c/code\u003e\u003c/a\u003e 🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15363\"\u003e#15363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9653034b8d459607a4b7f761e6c23a6f287fa5fa\"\u003e\u003ccode\u003e9653034\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f9a102faf071dbfa812a3af88d7d309d2ded4a6\"\u003e\u003ccode\u003e6f9a102\u003c/code\u003e\u003c/a\u003e ⬆ Bump cryptography from 46.0.5 to 46.0.7 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15314\"\u003e#15314\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/eba8942c81dbf990d25fbae34e6601bdbc21e74b\"\u003e\u003ccode\u003eeba8942\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/77d080caf850b8af5c0f467389edf03c057c7697\"\u003e\u003ccode\u003e77d080c\u003c/code\u003e\u003c/a\u003e ⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15309\"\u003e#15309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.3...0.136.0\"\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 `alembic` from 1.14.0 to 1.18.4\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.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.18.3\u003c/h1\u003e\n\u003cp\u003eReleased: January 29, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed regression in version 1.18.0 due to \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e where autogenerate\nwould raise \u003ccode\u003eNoReferencedTableError\u003c/code\u003e when a foreign key constraint\nreferenced a table that was not part of the initial table load, including\ntables filtered out by the\n\u003ccode\u003eEnvironmentContext.configure.include_name\u003c/code\u003e callable or tables\nin remote schemas that were not included in the initial reflection run.\u003c/p\u003e\n\u003cp\u003eThe change in \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e was a performance optimization that eliminated\nadditional reflection queries for tables that were only referenced by\nforeign keys but not explicitly included in the main reflection run.\nHowever, this optimization inadvertently removed the creation of\n\u003ccode\u003eTable\u003c/code\u003e objects for these referenced tables, causing autogenerate\nto fail when processing foreign key constraints that pointed to them.\u003c/p\u003e\n\u003cp\u003eThe fix creates placeholder \u003ccode\u003eTable\u003c/code\u003e objects for foreign key targets\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 `python-ulid` from 3.0.0 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mdomke/python-ulid/releases\"\u003epython-ulid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Python 3.13 to the trove classifiers.\u003c/li\u003e\n\u003cli\u003eOptimze \u003ccode\u003e@property\u003c/code\u003e to \u003ccode\u003e@cached_property\u003c/code\u003e \u003ca href=\"https://github.com/WH-2099\"\u003e\u003ccode\u003e@​WH-2099\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen generating ULIDs within the same millisecond, the library will ensure monotonic sort order by incrementing the randomness component by 1 bit. This process is described in the \u003ca href=\"https://github.com/ulid/spec/blob/master/README.md#monotonicity\"\u003espec\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSharpen regular expression for Pydantic \u003ca href=\"https://github.com/aplhk\"\u003e\u003ccode\u003e@​aplhk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix Sphinx warnings when referencing ULID from an external project. \u003ca href=\"https://github.com/BoboTiG\"\u003e\u003ccode\u003e@​BoboTiG\u003c/code\u003e\u003c/a\u003e .\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mdomke/python-ulid/blob/main/CHANGELOG.rst\"\u003epython-ulid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e3.1.0\u003c/code\u003e_ - 2025-08-18\u003c/h2\u003e\n\u003cp\u003eChanged\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e* Added Python 3.13 to the trove classifiers.\n* Optimze ``@property`` to ``@cached_property`` `@WH-2099 \u0026lt;https://github.com/WH-2099\u0026gt;`_.\n* When generating ULIDs within the same millisecond, the library will ensure monotonic sort order by\n  incrementing the randomness component by 1 bit. This process is descrbied in the\n  `spec \u0026lt;https://github.com/ulid/spec/blob/master/README.md#monotonicity\u0026gt;`_.\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e* Sharpen regular expression for Pydantic `@aplhk \u0026amp;lt;https://github.com/aplhk\u0026amp;gt;`_.\n* Fix Sphinx warnings when referencing ULID from an external project. `@BoboTiG \u0026amp;lt;https://github.com/BoboTiG\u0026amp;gt;`_.\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/12277593be322123b2f6ff39fbe329a3eb0b7c15\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1227759\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; chore: Always specify byteorder for Python 3.9\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/14683ee0df6e4a2966ceb32d3497bc5d3a9d7079\u0026quot;\u0026gt;\u0026lt;code\u0026gt;14683ee\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Implement same ms monotonic sort order\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/51b4ab8dace5661a1689f4bcaaefbc529d0c4632\u0026quot;\u0026gt;\u0026lt;code\u0026gt;51b4ab8\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; chore: Add changelog for 3.1.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/c36c65f7730422591f6302a60d6a00324c7ba9a2\u0026quot;\u0026gt;\u0026lt;code\u0026gt;c36c65f\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Improve Sphinx interdoc\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/dfc3b9cee46518514d44fb34fd5d36d6f414b965\u0026quot;\u0026gt;\u0026lt;code\u0026gt;dfc3b9c\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Fix sphinx warnings (\u0026lt;a href=\u0026quot;https://redirect.github.com/mdomke/python-ulid/issues/35\u0026quot;\u0026gt;#35\u0026lt;/a\u0026gt;)\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/59cd43d0d5aa3a8bf509f8da516d0c27597d020b\u0026quot;\u0026gt;\u0026lt;code\u0026gt;59cd43d\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Add uv and freezegun dependencies\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/9e56decb2b16ec8d6ebaccdc200de264e69f96e3\u0026quot;\u0026gt;\u0026lt;code\u0026gt;9e56dec\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Optimize regex pattern\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/9b3168bed2938e7de4a4d4565aec62a3eab7f5c5\u0026quot;\u0026gt;\u0026lt;code\u0026gt;9b3168b\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Update tooling, type checking and linting\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/929ef8ac34ef953c980490dd875b3100fc4351aa\u0026quot;\u0026gt;\u0026lt;code\u0026gt;929ef8a\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Move dev dependences into pyproject.toml\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/a1434e82a854f1796ba4ad5da5a095789038f506\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a1434e8\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; optimize property to cached_property (\u0026lt;a href=\u0026quot;https://redirect.github.com/mdomke/python-ulid/issues/37\u0026quot;\u0026gt;#37\u0026lt;/a\u0026gt;)\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Additional commits viewable in \u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/compare/3.0.0...3.1.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `prometheus-client` from 0.21.1 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/2cd1738fb880fd0e6aa9a02ec48585128388a6cd\"\u003e\u003ccode\u003e2cd1738\u003c/code\u003e\u003c/a\u003e Release 0.25.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/daa1626eaf705318013b708954499b0a049088c8\"\u003e\u003ccode\u003edaa1626\u003c/code\u003e\u003c/a\u003e docs: add API reference for all metric types  (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1159\"\u003e#1159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/8673912276bdca7ddbca5d163eb11422b546bffb\"\u003e\u003ccode\u003e8673912\u003c/code\u003e\u003c/a\u003e Support MultiProcessCollector in RestrictedRegistry. (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1150\"\u003e#1150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/671f75c6f1f04838995fadd57cda21beee01838b\"\u003e\u003ccode\u003e671f75c\u003c/code\u003e\u003c/a\u003e Fix spaces in grouping key values for push_to_gateway (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1156\"\u003e#1156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/1cf53feae63b6ecb0bd76eee80582a0fba957e09\"\u003e\u003ccode\u003e1cf53fe\u003c/code\u003e\u003c/a\u003e Fix server shutdown documentation (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/a8541354519d04852d24688845f1d2d495eef59c\"\u003e\u003ccode\u003ea854135\u003c/code\u003e\u003c/a\u003e Migrate to Github Actions (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1153\"\u003e#1153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/f417f6ea8f058165a1934e368fed245e91aafc14\"\u003e\u003ccode\u003ef417f6e\u003c/code\u003e\u003c/a\u003e Release 0.24.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/6f0e967c1f7a408b75861d6833a8d303874be95d\"\u003e\u003ccode\u003e6f0e967\u003c/code\u003e\u003c/a\u003e Pass correct registry to MultiProcessCollector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/c5024d310fbfcba45a5e9db62e337a3a7930ea16\"\u003e\u003ccode\u003ec5024d3\u003c/code\u003e\u003c/a\u003e Release 0.24.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e1cdc203b1cf5f15c7b9a64d79fccc7907a62ca3\"\u003e\u003ccode\u003ee1cdc20\u003c/code\u003e\u003c/a\u003e Add Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1143\"\u003e#1143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.21.1...v0.25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers[postgresql]` from 4.8.2 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers[postgresql]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003epython 3.14 is now supported!\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.2\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers[postgresql]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.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/gofrolist/project-800ms/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gofrolist%2Fproject-800ms/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4290196962","node_id":"PR_kwDOH5nOwc7TrsfW","number":241,"state":"closed","title":"Bump the uv-version group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-26T07:13:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-19T07:14:29.000Z","updated_at":"2026-04-26T07:13:46.000Z","time_to_close":604755,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-version","update_count":7,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"google-api-python-client","old_version":"2.191.0","new_version":"2.193.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-cloud-secret-manager","old_version":"2.26.0","new_version":"2.27.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"confluent-kafka","old_version":"2.13.2","new_version":"2.14.0","repository_url":"https://github.com/confluentinc/confluent-kafka-python"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-version group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.191.0` | `2.193.0` |\n| [google-cloud-secret-manager](https://github.com/googleapis/google-cloud-python) | `2.26.0` | `2.27.0` |\n| [confluent-kafka](https://github.com/confluentinc/confluent-kafka-python) | `2.13.2` | `2.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.9` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-api-python-client` from 2.191.0 to 2.193.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-api-python-client/releases\"\u003egoogle-api-python-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.193.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.192.0...v2.193.0\"\u003e2.193.0\u003c/a\u003e (2026-03-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5577adf2b4a615e185fc5f46b3255588165ca97b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5577adf2b4a615e185fc5f46b3255588165ca97b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/10d33297c93d17b03479d8ccd521167f6c2c2734\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/10d33297c93d17b03479d8ccd521167f6c2c2734\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f4eee62a0eb42e6b82648abd8aa10dfb1aa37d16\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f4eee62a0eb42e6b82648abd8aa10dfb1aa37d16\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealloydb:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e630a6a26516459182d2417c97bcdfdf6162f25e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e630a6a26516459182d2417c97bcdfdf6162f25e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eanalyticshub:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0ae6b5ef1979366181fa6c2518767769c45be897\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0ae6b5ef1979366181fa6c2518767769c45be897\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eandroidmanagement:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0da0a8095c028689210816c4ee41327c2375cb7b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0da0a8095c028689210816c4ee41327c2375cb7b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eandroidpublisher:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3bcae30e9a5b4ab190b71118301ba987f57b39c7\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3bcae30e9a5b4ab190b71118301ba987f57b39c7\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapihub:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d5853837b735d4094892f84433d95bd11b451fa8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d5853837b735d4094892f84433d95bd11b451fa8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bc6831124067abf3c765c1d17a1eef1e40999e2c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bc6831124067abf3c765c1d17a1eef1e40999e2c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/df7e53eccd94a3772b9cfc091971d7b8d01b94e9\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/df7e53eccd94a3772b9cfc091971d7b8d01b94e9\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebeyondcorp:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d4731d803581e75f1e83427a566487ead2ee432a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d4731d803581e75f1e83427a566487ead2ee432a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigqueryreservation:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3132d9257677c88bda0e5122b78f7bc6671c73cf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3132d9257677c88bda0e5122b78f7bc6671c73cf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a2ecc21536965effba0c9190c43f01f29eb8588f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a2ecc21536965effba0c9190c43f01f29eb8588f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecalendar:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8854dfe2d738d0aa03fb5c2827ebc2371a5b5af8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8854dfe2d738d0aa03fb5c2827ebc2371a5b5af8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2dc2ec0afd7236cb60e543ad96bebdbb69cd36e9\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2dc2ec0afd7236cb60e543ad96bebdbb69cd36e9\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/782936c6baae3d3c5288079e11503f851c4634f3\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/782936c6baae3d3c5288079e11503f851c4634f3\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclassroom:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/cffc11aaf58752e163fc930a4279b820ffe93daf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/cffc11aaf58752e163fc930a4279b820ffe93daf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbuild:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a4d5055d1829938f95c5b6455771b3b39fd86f98\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a4d5055d1829938f95c5b6455771b3b39fd86f98\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudidentity:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5eefc0e054eb1923754ef247815a90bf5855fe69\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5eefc0e054eb1923754ef247815a90bf5855fe69\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/166ea8146c4387cb03395ccba85c64970dab52de\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/166ea8146c4387cb03395ccba85c64970dab52de\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f18dffb3fabc828fe4134eb63ba2bc253951f44e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f18dffb3fabc828fe4134eb63ba2bc253951f44e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtactcenterinsights:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/ee644fcb3f92cb82a843ae5d3e9a5949dbeece16\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/ee644fcb3f92cb82a843ae5d3e9a5949dbeece16\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecss:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e7ad7419e23ac8bee818329be25ad8e0cef4e387\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e7ad7419e23ac8bee818329be25ad8e0cef4e387\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatalineage:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8abec73202e20ecc92dc34be35d0ee60d0a4592a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8abec73202e20ecc92dc34be35d0ee60d0a4592a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatamigration:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/67f740990a1cd40801a08f04278d245ab6fb87eb\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/67f740990a1cd40801a08f04278d245ab6fb87eb\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3834f263bb60bccd631e98b4faeac6ab1e61e762\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3834f263bb60bccd631e98b4faeac6ab1e61e762\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bda576f8d92d530bb09f1f73bfe04e1f53dc8a82\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bda576f8d92d530bb09f1f73bfe04e1f53dc8a82\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ediscoveryengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bf7598a36a8138c5a7ca58b8a0ac0e898d2d0955\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bf7598a36a8138c5a7ca58b8a0ac0e898d2d0955\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ediscoveryengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e51e83aa00e8cae6ad874e422b675fe0ca15c451\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e51e83aa00e8cae6ad874e422b675fe0ca15c451\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edisplayvideo:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6346814a18e61174f5e72a0619f9ef66cdd5d9d7\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6346814a18e61174f5e72a0619f9ef66cdd5d9d7\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edisplayvideo:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/866970307aa9d78289a92524e7159bdb68562d98\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/866970307aa9d78289a92524e7159bdb68562d98\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edlp:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bb33094680a85e7f05dad9c1dbd718e40045befd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bb33094680a85e7f05dad9c1dbd718e40045befd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edrive:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b538e2ec1463b95f01fb3fad110b521085b92ea4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b538e2ec1463b95f01fb3fad110b521085b92ea4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efcm:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/242ee76b2de143a24959021e6a3a75685a878aec\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/242ee76b2de143a24959021e6a3a75685a878aec\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efirebasedataconnect:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a7e36973a0f7720d52007c9b472d1cbc5145ec00\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a7e36973a0f7720d52007c9b472d1cbc5145ec00\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efirebaseml:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/735210e8c68f34c049ff629b7933943ded972647\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/735210e8c68f34c049ff629b7933943ded972647\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efirestore:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/276f7b50506e5cc5223ada3ca289a9f1590a95bf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/276f7b50506e5cc5223ada3ca289a9f1590a95bf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eiam:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/44b794c39ef2e2f9b16fbcdb6bb78dc20477db42\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/44b794c39ef2e2f9b16fbcdb6bb78dc20477db42\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emerchantapi:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3c5b82060080e05ef87b14f20dcd1816f03f1f79\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3c5b82060080e05ef87b14f20dcd1816f03f1f79\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emigrationcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/54b06e5eceeb875513d96efd0d650f13ab938040\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/54b06e5eceeb875513d96efd0d650f13ab938040\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emonitoring:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8f80001d00540f5121a706e3785df16d29d36b8f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8f80001d00540f5121a706e3785df16d29d36b8f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enetworkconnectivity:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8371670da6d9d37f44120ba7c7f8e8b7a7146036\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8371670da6d9d37f44120ba7c7f8e8b7a7146036\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enetworkmanagement:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/701b49119b61553bbd62b56f026f6dcd245b2e3d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/701b49119b61553bbd62b56f026f6dcd245b2e3d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enetworksecurity:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3a45a9c38802f2100467f60a33ad222537b46167\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3a45a9c38802f2100467f60a33ad222537b46167\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\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/googleapis/google-api-python-client/commit/00266153237185a9de250645f7dcc082b9189ce1\"\u003e\u003ccode\u003e0026615\u003c/code\u003e\u003c/a\u003e chore(main): release 2.193.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2728\"\u003e#2728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003e\u003ccode\u003ea7eaabb\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2729\"\u003e#2729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e\u003ccode\u003e3f48f2b\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2727\"\u003e#2727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/22028738645b236f967a47000b57dd823e722c12\"\u003e\u003ccode\u003e2202873\u003c/code\u003e\u003c/a\u003e chore(main): release 2.192.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2726\"\u003e#2726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/45a338522e6c484029833b3bcf7fe73c58648e55\"\u003e\u003ccode\u003e45a3385\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2725\"\u003e#2725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.191.0...v2.193.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-secret-manager` from 2.26.0 to 2.27.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-secret-manager's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-firestore: v2.27.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-firestore-v2.26.0...google-cloud-firestore-v2.27.0\"\u003ev2.27.0\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-secret-manager's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v2.26.0...google-cloud-documentai-v2.27.0\"\u003e2.27.0\u003c/a\u003e (2024-04-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Chunk header and footer in Doc AI external proto (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep the API doc up-to-date with recent changes (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f19d85b8083b57c2e60b8cd257d3e1f419e7eed\"\u003e\u003ccode\u003e0f19d85\u003c/code\u003e\u003c/a\u003e chore: fix missing heading in changelog (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16189\"\u003e#16189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a16755d8e2fcd941e94cc967a5acd72c95eb7644\"\u003e\u003ccode\u003ea16755d\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T111101Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9694ce943e2b7f4729b78e80b25a6729bfb292ca\"\u003e\u003ccode\u003e9694ce9\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T114549Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c4a35cf59cc2d82243fdd6e2bd5cab981f3a1467\"\u003e\u003ccode\u003ec4a35cf\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T132735Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16146\"\u003e#16146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/640a86b3ba70b191984c3edaded68ddbe5e540d8\"\u003e\u003ccode\u003e640a86b\u003c/code\u003e\u003c/a\u003e chore: librarian update image pull request: 20260325T221325Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16175\"\u003e#16175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/341284c80e2f09149467541767499f30b369df55\"\u003e\u003ccode\u003e341284c\u003c/code\u003e\u003c/a\u003e chore(deps): bump pyasn1 from 0.6.1 to 0.6.3 in /packages/sqlalchemy-spanner ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ec9262c45055d3d2b596cdde1649d3ce90b4347d\"\u003e\u003ccode\u003eec9262c\u003c/code\u003e\u003c/a\u003e fix: Allow Protobuf 7.x, require Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16102\"\u003e#16102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/cf50cea185f2ad4763a14f1f0c14ca50fc2fe418\"\u003e\u003ccode\u003ecf50cea\u003c/code\u003e\u003c/a\u003e feat(firestore): literals pipeline stage (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16028\"\u003e#16028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4b400faca2fcd40f68a812dc6f47a79d0cbf7433\"\u003e\u003ccode\u003e4b400fa\u003c/code\u003e\u003c/a\u003e chore: librarian generate pull request: 20260325T142358Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16166\"\u003e#16166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-secret-manager-v2.26.0...google-cloud-secret-manager-v2.27.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `confluent-kafka` from 2.13.2 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/releases\"\u003econfluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/blob/master/CHANGELOG.md\"\u003econfluent-kafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 - 2026-04-01\u003c/h2\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/commit/a2f066da6bbf28d3285b1c6b4764ad68967aac55\"\u003e\u003ccode\u003ea2f066d\u003c/code\u003e\u003c/a\u003e v2.14.0 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d80ff360bfc01690c5c59d24ff1f3fdfa4505867\"\u003e\u003ccode\u003ed80ff36\u003c/code\u003e\u003c/a\u003e Add current release candidate to setup_all_versions.py (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/ea948daf03c959984459dd5b2971ca270078a270\"\u003e\u003ccode\u003eea948da\u003c/code\u003e\u003c/a\u003e v2.14.0rc1 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2224\"\u003e#2224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/73c7953fbc0fbb80af6335078500d9b7cfcc8296\"\u003e\u003ccode\u003e73c7953\u003c/code\u003e\u003c/a\u003e Avoid redundant lookup_schema call in _get_reader_schema when use_schema_id i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/410a59c8ca81fdf06fbc38dc2b86947e15dcb8da\"\u003e\u003ccode\u003e410a59c\u003c/code\u003e\u003c/a\u003e Add enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/f3af6aa5a65aa7754b919d988f30d48dbce96f36\"\u003e\u003ccode\u003ef3af6aa\u003c/code\u003e\u003c/a\u003e Remove callback wrapping for oauth_cb in AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d313cac869b3e0f6810a7b1e1127f436115199f6\"\u003e\u003ccode\u003ed313cac\u003c/code\u003e\u003c/a\u003e Fix return type signature for context managers (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/40e8a6fa9db68405cbed31c877d4e92ffe25aaf2\"\u003e\u003ccode\u003e40e8a6f\u003c/code\u003e\u003c/a\u003e Implement async context manager protocol for AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/0ed043f459b0b6e557d53111ea1afccee265378f\"\u003e\u003ccode\u003e0ed043f\u003c/code\u003e\u003c/a\u003e Fix typo (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/1691\"\u003e#1691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/cc164a1cf0c6f5bb285130fd0448acdcb0051f92\"\u003e\u003ccode\u003ecc164a1\u003c/code\u003e\u003c/a\u003e DGS-23025 Add AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/compare/v2.13.2...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.4 to 0.15.9\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.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zsol\"\u003e\u003ccode\u003e@​zsol\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zsol\"\u003e\u003ccode\u003e@​zsol\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/724ccc1ae8a61e872cf58435f2c073189dc248f2\"\u003e\u003ccode\u003e724ccc1\u003c/code\u003e\u003c/a\u003e Bump 0.15.9 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24369\"\u003e#24369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/96d9e0964cb87498ef15510ea7f896ba336659f9\"\u003e\u003ccode\u003e96d9e09\u003c/code\u003e\u003c/a\u003e [ty] Move the \u003ccode\u003edeferred\u003c/code\u003e submodule inside \u003ccode\u003einfer/builder\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24368\"\u003e#24368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/130da28d610a466721bb942e8a5e0ec47bbe3469\"\u003e\u003ccode\u003e130da28\u003c/code\u003e\u003c/a\u003e [ty] Infer the \u003ccode\u003eextra_items\u003c/code\u003e keyword argument to class-based TypedDicts as an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a617c54b0708a8c1eb850cc3b2a5caee21137a28\"\u003e\u003ccode\u003ea617c54\u003c/code\u003e\u003c/a\u003e [ty] Validate type qualifiers in functional TypedDict fields and the `extra_i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8517087c6cd0aa4f33dcede605ff642941dd74b\"\u003e\u003ccode\u003ed851708\u003c/code\u003e\u003c/a\u003e [ty] Improve robustness of various type-qualifier-related checks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24251\"\u003e#24251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aecb5877c6d6fe035c03aba994ec3a7b935b8f02\"\u003e\u003ccode\u003eaecb587\u003c/code\u003e\u003c/a\u003e Only run the release-gate on workflow dispatch (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24366\"\u003e#24366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b88957174311030927bf564da32d05dee0eb89d9\"\u003e\u003ccode\u003eb889571\u003c/code\u003e\u003c/a\u003e [ty] Use \u003ccode\u003einfer_type_expression\u003c/code\u003e for parsing parameter annotations and return...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3286a62be986a8d6d04d95b3bc619f06e012fa2f\"\u003e\u003ccode\u003e3286a62\u003c/code\u003e\u003c/a\u003e Add a \u0026quot;release-gate\u0026quot; step to the release workflow (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24365\"\u003e#24365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5f88756ee10e3faf0e96c883c34c95fc78200536\"\u003e\u003ccode\u003e5f88756\u003c/code\u003e\u003c/a\u003e Disallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5c59f8a46965cac3470f09972196c8620faa4626\"\u003e\u003ccode\u003e5c59f8a\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/navikt/dvh-airflow-kafka/pull/241","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/navikt%2Fdvh-airflow-kafka/issues/241","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/241/packages"},{"uuid":"4254110274","node_id":"PR_kwDOQfXFOM7R9cPR","number":102,"state":"open","title":"deps(py): update testcontainers requirement from \u003e=4.0 to \u003e=4.14.2","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-13T11:25:51.000Z","updated_at":"2026-04-13T11:33:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(py): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.14.2\"\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/lifeodyssey/Seichijunrei-agent/pull/102","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifeodyssey%2FSeichijunrei-agent/issues/102","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/102/packages"},{"uuid":"4236191154","node_id":"PR_kwDORKTFzM7RUY7z","number":57,"state":"open","title":"chore: Bump the all-python group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-10T02:46:35.000Z","updated_at":"2026-04-10T02:49:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","group_name":"all-python","update_count":7,"packages":[{"name":"fastmcp","old_version":"2.14.5","new_version":"3.1.0","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"neo4j","old_version":"6.0.3","new_version":"6.1.0","repository_url":"https://github.com/neo4j/neo4j-python-driver"},{"name":"redis","old_version":"7.1.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-python group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `2.14.5` | `3.1.0` |\n| [neo4j](https://github.com/neo4j/neo4j-python-driver) | `6.0.3` | `6.1.0` |\n| [redis](https://github.com/redis/redis-py) | `7.1.0` | `7.4.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `fastmcp` from 2.14.5 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0: Code to Joy\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch2\u003eCode Mode\u003c/h2\u003e\n\u003cp\u003eStandard MCP has two scaling problems. The entire tool catalog loads into context upfront — with a large server, that's tens of thousands of tokens before the LLM reads a single word of the user's request. And every tool call is a round-trip: the LLM calls a tool, the result flows back through the context window, the LLM reasons about it, calls another tool, and so on. Intermediate results that only exist to feed the next step still burn tokens every time.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eCodeMode\u003c/code\u003e is an experimental transform that solves both. Instead of seeing your tool catalog directly, the LLM gets meta-tools: it searches for relevant tools on demand (using BM25), inspects their schemas, then writes Python that chains \u003ccode\u003ecall_tool()\u003c/code\u003e calls in a sandbox and returns a final answer. Discovery is staged and targeted; intermediate results never touch the model's context window.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import FastMCP\r\nfrom fastmcp.experimental.transforms.code_mode import CodeMode\r\n\u003cp\u003emcp = FastMCP(\u0026quot;Server\u0026quot;, transforms=[CodeMode()])\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYour existing tools don't change — \u003ccode\u003eCodeMode\u003c/code\u003e wraps them. The default three-stage flow (search → get schemas → execute) is configurable: collapse it to two stages for smaller catalogs, skip discovery entirely for tiny ones. The sandbox supports resource limits on time, memory, and recursion depth.\u003c/p\u003e\n\u003cp\u003eRead the docs \u003ca href=\"https://gofastmcp.com/servers/transforms/code-mode\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eSearch Transforms\u003c/h2\u003e\n\u003cp\u003eCode Mode's discovery layer is also available as a standalone transform. \u003ccode\u003eSearchTools\u003c/code\u003e adds BM25 text search to any server — clients can query against tool names and descriptions and receive ranked results, without needing to know tool names upfront. This is useful anywhere the tool catalog is large, dynamic, or not known in advance.\u003c/p\u003e\n\u003ch2\u003ePrefab Apps\u003c/h2\u003e\n\u003cp\u003e3.1 adds early integration with \u003ca href=\"https://prefab.prefect.io\"\u003ePrefab\u003c/a\u003e, a frontend framework with a Python DSL that compiles to React. The vision: Python developers building MCP servers shouldn't have to leave Python to ship a proper UI. Prefab is still under very active development (their words: \u0026quot;probably shouldn't use it yet\u0026quot;), but the integration is here, the pieces are aligning, and 3.2 is where this gets interesting.\u003c/p\u003e\n\u003ch2\u003eAuth Additions\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eMultiAuth\u003c/code\u003e lets you compose multiple token verification sources into a single auth layer — useful when you need to accept tokens from more than one provider (e.g., internal JWTs alongside a third-party OAuth provider). This release also adds out-of-the-box support for \u003cstrong\u003ePropelAuth\u003c/strong\u003e and a \u003cstrong\u003eGoogle GenAI sampling handler\u003c/strong\u003e.\u003c/p\u003e\n\u003ch2\u003eUnder the Hood\u003c/h2\u003e\n\u003cp\u003eHeavy imports are now lazy-loaded, meaningfully reducing startup time for servers that don't use every feature. \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e gain a \u003ccode\u003e-m\u003c/code\u003e/\u003ccode\u003e--module\u003c/code\u003e flag for module-style invocation, \u003ccode\u003eMCPConfigTransport\u003c/code\u003e now correctly persists sessions across tool calls, and \u003ccode\u003esearch_result_serializer\u003c/code\u003e gives you a hook to customize how search results are serialized for markdown output. Eight new contributors, and the usual round of fixes.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003ePrefectHQ/fastmcp#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003ePrefectHQ/fastmcp#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003ePrefectHQ/fastmcp#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003ePrefectHQ/fastmcp#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003ePrefectHQ/fastmcp#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003ePrefectHQ/fastmcp#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003ePrefectHQ/fastmcp#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003ePrefectHQ/fastmcp#3310\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/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\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/PrefectHQ/fastmcp/commit/8bc31360e85b1192e78615f09fc525d57ff5c5f7\"\u003e\u003ccode\u003e8bc3136\u003c/code\u003e\u003c/a\u003e Restructure docs navigation: CLI section, Composition, More (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3361\"\u003e#3361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8a356ad87025fa94eccf85ccaeb120683a3aad61\"\u003e\u003ccode\u003e8a356ad\u003c/code\u003e\u003c/a\u003e Add include_unversioned option to VersionFilter (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3349\"\u003e#3349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/fccbd43c1ea43a9f157d51aadaeda1467d91801a\"\u003e\u003ccode\u003efccbd43\u003c/code\u003e\u003c/a\u003e Add FASTMCP_TRANSPORT setting for default transport selection (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/1796\"\u003e#1796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/404b820144152a85d38176bbfac7aebf9e07ef23\"\u003e\u003ccode\u003e404b820\u003c/code\u003e\u003c/a\u003e Add ListTools, search limit, and catalog size annotation to CodeMode (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3359\"\u003e#3359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/49534ce91df601ff41f255d88344fe93e8968c57\"\u003e\u003ccode\u003e49534ce\u003c/code\u003e\u003c/a\u003e Add Google GenAI Sampling Handler (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/af557388c71749ff839a85181f7db20216bff2d9\"\u003e\u003ccode\u003eaf55738\u003c/code\u003e\u003c/a\u003e feat(contrib): auto-sync MCPMixin decorators with from_function signatures (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/902b63f67652f0ce2cc102d68384024bc7707de2\"\u003e\u003ccode\u003e902b63f\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3313\"\u003e#3313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f2dd2e5124e39d6f42d21382f2df3fa851704ec5\"\u003e\u003ccode\u003ef2dd2e5\u003c/code\u003e\u003c/a\u003e Fix session persistence across tool calls in multi-server MCPConfigTransport ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/2ab8beb195a743f2a1cd02efd4a27c563305c19e\"\u003e\u003ccode\u003e2ab8beb\u003c/code\u003e\u003c/a\u003e Remove system role references from docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3356\"\u003e#3356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/59da3e4ed444d78e44e72b3a3a2452fdf6845be1\"\u003e\u003ccode\u003e59da3e4\u003c/code\u003e\u003c/a\u003e Decompose CodeMode into composable discovery tools (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3354\"\u003e#3354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.5...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `neo4j` from 6.0.3 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/releases\"\u003eneo4j's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNeo4j Python Driver 6.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\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/neo4j/neo4j-python-driver/blob/6.x/CHANGELOG.md\"\u003eneo4j's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eNeo4j Driver Change Log (breaking/major changes only)\u003c/h1\u003e\n\u003cp\u003eSee also \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki\u003c/a\u003e for a full changelog.\u003c/p\u003e\n\u003ch2\u003eNEXT RELEASE\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNo breaking or major changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.14 support added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.7, 3.8, and 3.9 support has been dropped.\u003c/li\u003e\n\u003cli\u003eRemove deprecated package alias \u003ccode\u003eneo4j-driver\u003c/code\u003e. Use \u003ccode\u003epip install neo4j\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup.py\u003c/code\u003e. Please use a recent enough packaging/build tool that supports \u003ccode\u003epyproject.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated modules:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.conf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.data\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.meta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.packstream\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.routing\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.arithmetic\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.clock_implementation\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.hydration\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.metaclasses\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.query\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.summary\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRemove deprecated exports from \u003ccode\u003eneo4j\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elog\u003c/code\u003e, \u003ccode\u003eConfig\u003c/code\u003e, \u003ccode\u003ePoolConfig\u003c/code\u003e, \u003ccode\u003eSessionConfig\u003c/code\u003e, \u003ccode\u003eWorkspaceConfig\u003c/code\u003e (internal - no replacement)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSummaryNotificationPosition\u003c/code\u003e (use \u003ccode\u003eSummaryInputPosition\u003c/code\u003e instead)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapi.Version\u003c/code\u003e has been removed as it's unused now.\u003cbr /\u003e\n\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e now is a \u003ccode\u003etuple[int, int]\u003c/code\u003e insteadof a \u003ccode\u003eapi.Version\u003c/code\u003e.\nThis should be drop-in replacement is most cases:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e was a sup-type of \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e was already documented and typed as \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e's additional methods were undocumented and shouldn't have been used\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eChanged errors raised under certain circumstances\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eConfigurationError\u003c/code\u003e if the passed \u003ccode\u003eauth\u003c/code\u003e parameters is not valid (instead of \u003ccode\u003eAuthError\u003c/code\u003e)\n\u003cul\u003e\n\u003cli\u003eThis improves the differentiation between \u003ccode\u003eDriverError\u003c/code\u003e for client-side errors and \u003ccode\u003eNeo4jError\u003c/code\u003e for server-side\nerrors.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eaccess_mode\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eValueError\u003c/code\u003e on invalid value (instead of \u003ccode\u003eClientError\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eConsistently check the value (also for non-routing drivers)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.exceptions.UnsupportedServerProduct\u003c/code\u003e if no common bolt protocol version could be negotiated with the server\n(instead of internal \u003ccode\u003eneo4j._exceptions.BoltHandshakeError\u003c/code\u003e).\u003cbr /\u003e\n\u003ccode\u003eUnsupportedServerProduct\u003c/code\u003e is now a subclass of \u003ccode\u003eConfigurationError\u003c/code\u003e (instead of \u003ccode\u003eException\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econnection_acquisition_timeout\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eValueError\u003c/code\u003e on invalid values (instead of \u003ccode\u003eClientError\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\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/neo4j/neo4j-python-driver/commit/4a3fcdfc325c5ff11a92b6190c179853ad4c5b96\"\u003e\u003ccode\u003e4a3fcdf\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a56e7f6aada9ec53465a4428cb7334be15c601f2\"\u003e\u003ccode\u003ea56e7f6\u003c/code\u003e\u003c/a\u003e Unify connection error handling between async and sync (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/fc4811d195f7b48049abed22992c44e57e2016ec\"\u003e\u003ccode\u003efc4811d\u003c/code\u003e\u003c/a\u003e Fix: connection_acquisition_timeout now covers TLS handshake (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/c8c4e5b7ad420c0c4f4278d2fff896f6a9983815\"\u003e\u003ccode\u003ec8c4e5b\u003c/code\u003e\u003c/a\u003e Docs: Fix outdated preview notes (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/8c7c19bc80f33095f08d34c454292a69430dcae8\"\u003e\u003ccode\u003e8c7c19b\u003c/code\u003e\u003c/a\u003e Add .semgrepignore (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1270\"\u003e#1270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a0819c233664e87e24c251e2e29eea24738d63bb\"\u003e\u003ccode\u003ea0819c2\u003c/code\u003e\u003c/a\u003e Fix AttributeError when pool is None in Bolt3 error handling (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/4fc39f3e6f3ea53e2987cd30d47412b36a5f7025\"\u003e\u003ccode\u003e4fc39f3\u003c/code\u003e\u003c/a\u003e Python 3.14 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1264\"\u003e#1264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/compare/6.0.3...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.1.0 to 7.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix AttributeError in cluster metrics recording when connection is None or ClusterNode object instance is used to extract the connection info (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords might leak in plain text logs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cp\u003e-Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpose basic Otel classes and functions to be importable through redis.observability to match the examples in the readthedocs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\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/redis/redis-py/commit/b72f24ad6a2226d46aed770e18094a86117d2217\"\u003e\u003ccode\u003eb72f24a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0a4e0afe36504c3fb6df1e38683ea946febac9d3\"\u003e\u003ccode\u003e0a4e0af\u003c/code\u003e\u003c/a\u003e Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/15492c9156d3ab8dce05360977480510cf24fbf9\"\u003e\u003ccode\u003e15492c9\u003c/code\u003e\u003c/a\u003e Refactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cd964ac96649df872a051835e9a52e05a5090607\"\u003e\u003ccode\u003ecd964ac\u003c/code\u003e\u003c/a\u003e Expose basic Otel classes and funtions to be importable through redis.observa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ab74d02ed9b15176f67edb817de83524f8145a\"\u003e\u003ccode\u003e46ab74d\u003c/code\u003e\u003c/a\u003e Fixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/26482dbaae38abdb1966d9b1c803331e2dab2053\"\u003e\u003ccode\u003e26482db\u003c/code\u003e\u003c/a\u003e Fix AttributeError in cluster metrics recording when connection is None or Cl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.1.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003ePlanned Changes to Defaults and Flags in Mypy 2.0\u003c/h3\u003e\n\u003cp\u003eAs a reminder, we are planning to enable \u003ccode\u003e--local-partial-types\u003c/code\u003e by default in mypy 2.0, which\nwill likely be the next feature release. This will often require at least minor code changes. This\noption is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon\nmodes consistent.\u003c/p\u003e\n\u003cp\u003eNote that this release improves the compatibility of \u003ccode\u003e--local-partial-types\u003c/code\u003e significantly to\nmake the switch easier (see below for more).\u003c/p\u003e\n\u003cp\u003eThis can also be configured in a mypy configuration file (use \u003ccode\u003eFalse\u003c/code\u003e to disable):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003elocal_partial_types = True\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe will also enable \u003ccode\u003e--strict-bytes\u003c/code\u003e by default in mypy 2.0. This usually requires at most\nminor code changes to adopt. For more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e will be renamed to \u003ccode\u003e--allow-redefinition\u003c/code\u003e. If you want\nto continue using the older \u003ccode\u003e--allow-redefinition\u003c/code\u003e semantics which are less flexible (e.g.\nlimited support for conditional redefinitions), you can switch to \u003ccode\u003e--allow-redefinition-old\u003c/code\u003e,\nwhich is currently supported as an alias to the legacy \u003ccode\u003e--allow-redefinition\u003c/code\u003e behavior.\nTo use \u003ccode\u003e--allow-redefinition\u003c/code\u003e in the upcoming mypy 2.0, you can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\u003c/code\u003e),\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v1.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/jychp/engramcp/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jychp%2Fengramcp/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"},{"uuid":"4170138773","node_id":"PR_kwDOKAfLvc7OmJu5","number":127,"state":"open","title":"Bump testcontainers from 4.14.0 to 4.14.2 in /rss","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-30T11:58:02.000Z","updated_at":"2026-04-07T10:15:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"testcontainers","old_version":"4.14.0","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":"/rss","ecosystem":"pip"},"body":"Bumps [testcontainers](https://github.com/testcontainers/testcontainers-python) from 4.14.0 to 4.14.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.2\"\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/clemensv/real-time-sources/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Freal-time-sources/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"},{"uuid":"4170137380","node_id":"PR_kwDOKAfLvc7OmJd6","number":119,"state":"open","title":"Bump testcontainers from 4.14.1 to 4.14.2 in /gtfs/gtfs_rt_producer/gtfs_rt_producer_kafka_producer","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-30T11:57:46.000Z","updated_at":"2026-04-07T10:13:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":"/gtfs/gtfs_rt_producer/gtfs_rt_producer_kafka_producer","ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [testcontainers](https://github.com/testcontainers/testcontainers-python) from 4.14.1 to 4.14.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\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/clemensv/real-time-sources/pull/119","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Freal-time-sources/issues/119","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/119/packages"},{"uuid":"4148756885","node_id":"PR_kwDORKTFzM7N64km","number":53,"state":"open","title":"chore: Bump the all-python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T02:46:14.000Z","updated_at":"2026-03-27T02:47:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","group_name":"all-python","update_count":5,"packages":[{"name":"fastmcp","old_version":"2.14.5","new_version":"3.0.2","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"neo4j","old_version":"6.0.3","new_version":"6.1.0","repository_url":"https://github.com/neo4j/neo4j-python-driver"},{"name":"redis","old_version":"7.1.0","new_version":"7.3.0","repository_url":"https://github.com/redis/redis-py"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-python group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `2.14.5` | `3.0.2` |\n| [neo4j](https://github.com/neo4j/neo4j-python-driver) | `6.0.3` | `6.1.0` |\n| [redis](https://github.com/redis/redis-py) | `7.1.0` | `7.3.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `fastmcp` from 2.14.5 to 3.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.2: Threecovery Mode II\u003c/h2\u003e\n\u003cp\u003eTwo community-contributed fixes: auth headers from MCP transport no longer leak through to downstream OpenAPI APIs, and background task workers now correctly receive the originating request ID. Plus a new docs example for context-aware tool factories.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: prevent MCP transport auth header from leaking to downstream OpenAPI APIs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3260\"\u003e#3260\u003c/a\u003e) by \u003ca href=\"https://github.com/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3262\"\u003ePrefectHQ/fastmcp#3262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: propagate origin_request_id to background task workers by \u003ca href=\"https://github.com/gfortaine\"\u003e\u003ccode\u003e@​gfortaine\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3175\"\u003ePrefectHQ/fastmcp#3175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd v3.0.1 release notes by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3259\"\u003ePrefectHQ/fastmcp#3259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add context-aware tool factory example by \u003ca href=\"https://github.com/machov\"\u003e\u003ccode\u003e@​machov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3264\"\u003ePrefectHQ/fastmcp#3264\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/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3262\"\u003ePrefectHQ/fastmcp#3262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/machov\"\u003e\u003ccode\u003e@​machov\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3264\"\u003ePrefectHQ/fastmcp#3264\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.1...v3.0.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.0.1...v3.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.1: Threecovery Mode\u003c/h2\u003e\n\u003cp\u003eFirst patch after 3.0 — mostly smoothing out rough edges discovered in the wild. The big ones: middleware state that wasn't surviving the trip to tool handlers now does, \u003ccode\u003eTool.from_tool()\u003c/code\u003e accepts callables again, OpenAPI schemas with circular references no longer crash discovery, and decorator overloads now return the correct types in function mode. Also adds \u003ccode\u003everify_id_token\u003c/code\u003e to OIDCProxy for providers (like some Azure AD configs) that issue opaque access tokens but standard JWT id_tokens.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd verify_id_token option to OIDCProxy by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3248\"\u003ePrefectHQ/fastmcp#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix v3.0.0 changelog compare link by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3223\"\u003ePrefectHQ/fastmcp#3223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix MDX parse error in upgrade guide prompts by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3227\"\u003ePrefectHQ/fastmcp#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-serializable state lost between middleware and tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3234\"\u003ePrefectHQ/fastmcp#3234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept callables in Tool.from_tool() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3235\"\u003ePrefectHQ/fastmcp#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve skill metadata through provider wrapping by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3237\"\u003ePrefectHQ/fastmcp#3237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix circular reference crash in OpenAPI schemas by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3245\"\u003ePrefectHQ/fastmcp#3245\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with future annotations and Context/Depends parameters by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3243\"\u003ePrefectHQ/fastmcp#3243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty ignore syntax in OpenAPI provider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3253\"\u003ePrefectHQ/fastmcp#3253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse max_completion_tokens instead of deprecated max_tokens in OpenAI handler by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3254\"\u003ePrefectHQ/fastmcp#3254\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty compatibility with upgraded deps by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3257\"\u003ePrefectHQ/fastmcp#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix decorator overload return types for function mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3258\"\u003ePrefectHQ/fastmcp#3258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync README with welcome.mdx, fix install count by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3224\"\u003ePrefectHQ/fastmcp#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument dict-to-Message prompt migration in upgrade guides by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3225\"\u003ePrefectHQ/fastmcp#3225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix v2 upgrade guide: remove incorrect v1 import advice by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3226\"\u003ePrefectHQ/fastmcp#3226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnimated banner by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3231\"\u003ePrefectHQ/fastmcp#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument mounted server state store isolation in upgrade guide by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3236\"\u003ePrefectHQ/fastmcp#3236\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.2\"\u003ev3.0.2: Threecovery Mode II\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTwo community-contributed fixes: auth headers from MCP transport no longer leak through to downstream OpenAPI APIs, and background task workers now correctly receive the originating request ID. Plus a new docs example for context-aware tool factories.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: prevent MCP transport auth header from leaking to downstream OpenAPI APIs by \u003ca href=\"https://github.com/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3262\"\u003e#3262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: propagate origin_request_id to background task workers by \u003ca href=\"https://github.com/gfortaine\"\u003e\u003ccode\u003e@​gfortaine\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3175\"\u003e#3175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd v3.0.1 release notes by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3259\"\u003e#3259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add context-aware tool factory example by \u003ca href=\"https://github.com/machov\"\u003e\u003ccode\u003e@​machov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3264\"\u003e#3264\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.1...v3.0.2\"\u003ev3.0.1...v3.0.2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.1\"\u003ev3.0.1: Three-covery Mode\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFirst patch after 3.0 — mostly smoothing out rough edges discovered in the wild. The big ones: middleware state that wasn't surviving the trip to tool handlers now does, \u003ccode\u003eTool.from_tool()\u003c/code\u003e accepts callables again, OpenAPI schemas with circular references no longer crash discovery, and decorator overloads now return the correct types in function mode. Also adds \u003ccode\u003everify_id_token\u003c/code\u003e to OIDCProxy for providers (like some Azure AD configs) that issue opaque access tokens but standard JWT id_tokens.\u003c/p\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd verify_id_token option to OIDCProxy by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix v3.0.0 changelog compare link by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3223\"\u003e#3223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix MDX parse error in upgrade guide prompts by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3227\"\u003e#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-serializable state lost between middleware and tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3234\"\u003e#3234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept callables in Tool.from_tool() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve skill metadata through provider wrapping by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3237\"\u003e#3237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix circular reference crash in OpenAPI schemas by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3245\"\u003e#3245\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with future annotations and Context/Depends parameters by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3243\"\u003e#3243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty ignore syntax in OpenAPI provider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3253\"\u003e#3253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse max_completion_tokens instead of deprecated max_tokens in OpenAI handler by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3254\"\u003e#3254\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty compatibility with upgraded deps by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3257\"\u003e#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix decorator overload return types for function mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3258\"\u003e#3258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync README with welcome.mdx, fix install count by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument dict-to-Message prompt migration in upgrade guides by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3225\"\u003e#3225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix v2 upgrade guide: remove incorrect v1 import advice by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3226\"\u003e#3226\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/PrefectHQ/fastmcp/commit/c71840631e03cddfd391ad2a91d5bbab7aef05d6\"\u003e\u003ccode\u003ec718406\u003c/code\u003e\u003c/a\u003e docs: add context-aware tool factory example (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/40d3190317707d46019ded953325cbcad78bca57\"\u003e\u003ccode\u003e40d3190\u003c/code\u003e\u003c/a\u003e fix: propagate origin_request_id to background task workers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3175\"\u003e#3175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d85cfb84e1f6dfb66ad402383356f361ad79b1d2\"\u003e\u003ccode\u003ed85cfb8\u003c/code\u003e\u003c/a\u003e Revert to long-lived PR approach for auto-generated docs/schema (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3272\"\u003e#3272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/83d6254757806c1b9f2e07c9ffcbd580a5b96aec\"\u003e\u003ccode\u003e83d6254\u003c/code\u003e\u003c/a\u003e Allow Marvin to open PRs on comment (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3267\"\u003e#3267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0d4580fef32a8666b93dabbef86e05d763307ba4\"\u003e\u003ccode\u003e0d4580f\u003c/code\u003e\u003c/a\u003e fix: prevent MCP transport auth header from leaking to downstream OpenAPI API...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3ec7cfa0d55c8ecd0550f656e4f1bc82ca4b0325\"\u003e\u003ccode\u003e3ec7cfa\u003c/code\u003e\u003c/a\u003e Add v3.0.1 release notes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3259\"\u003e#3259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb3e159bc643d3d5a8ed336a794c828abbf4e00e\"\u003e\u003ccode\u003ebb3e159\u003c/code\u003e\u003c/a\u003e Fix decorator overload return types for function mode (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3258\"\u003e#3258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/43e9cdd2758c64f7a12e8290794df468d5d97948\"\u003e\u003ccode\u003e43e9cdd\u003c/code\u003e\u003c/a\u003e Fix ty compatibility with upgraded deps (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3257\"\u003e#3257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/2218a6f52a2e5ba89d9b1705e2fbe2d8ea6de08d\"\u003e\u003ccode\u003e2218a6f\u003c/code\u003e\u003c/a\u003e Use max_completion_tokens instead of deprecated max_tokens in OpenAI handler ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/1d7e92ecaba5be516bf7f4140d4dee43ed856c88\"\u003e\u003ccode\u003e1d7e92e\u003c/code\u003e\u003c/a\u003e Fix ty ignore syntax in OpenAPI provider (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3253\"\u003e#3253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.5...v3.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `neo4j` from 6.0.3 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/releases\"\u003eneo4j's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNeo4j Python Driver 6.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\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/neo4j/neo4j-python-driver/blob/6.x/CHANGELOG.md\"\u003eneo4j's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eNeo4j Driver Change Log (breaking/major changes only)\u003c/h1\u003e\n\u003cp\u003eSee also \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki\u003c/a\u003e for a full changelog.\u003c/p\u003e\n\u003ch2\u003eNEXT RELEASE\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNo breaking or major changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.14 support added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.7, 3.8, and 3.9 support has been dropped.\u003c/li\u003e\n\u003cli\u003eRemove deprecated package alias \u003ccode\u003eneo4j-driver\u003c/code\u003e. Use \u003ccode\u003epip install neo4j\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup.py\u003c/code\u003e. Please use a recent enough packaging/build tool that supports \u003ccode\u003epyproject.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated modules:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.conf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.data\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.meta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.packstream\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.routing\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.arithmetic\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.clock_implementation\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.hydration\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.metaclasses\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.query\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.summary\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRemove deprecated exports from \u003ccode\u003eneo4j\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elog\u003c/code\u003e, \u003ccode\u003eConfig\u003c/code\u003e, \u003ccode\u003ePoolConfig\u003c/code\u003e, \u003ccode\u003eSessionConfig\u003c/code\u003e, \u003ccode\u003eWorkspaceConfig\u003c/code\u003e (internal - no replacement)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSummaryNotificationPosition\u003c/code\u003e (use \u003ccode\u003eSummaryInputPosition\u003c/code\u003e instead)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapi.Version\u003c/code\u003e has been removed as it's unused now.\u003cbr /\u003e\n\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e now is a \u003ccode\u003etuple[int, int]\u003c/code\u003e insteadof a \u003ccode\u003eapi.Version\u003c/code\u003e.\nThis should be drop-in replacement is most cases:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e was a sup-type of \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e was already documented and typed as \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e's additional methods were undocumented and shouldn't have been used\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eChanged errors raised under certain circumstances\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eConfigurationError\u003c/code\u003e if the passed \u003ccode\u003eauth\u003c/code\u003e parameters is not valid (instead of \u003ccode\u003eAuthError\u003c/code\u003e)\n\u003cul\u003e\n\u003cli\u003eThis improves the differentiation between \u003ccode\u003eDriverError\u003c/code\u003e for client-side errors and \u003ccode\u003eNeo4jError\u003c/code\u003e for server-side\nerrors.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eaccess_mode\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eValueError\u003c/code\u003e on invalid value (instead of \u003ccode\u003eClientError\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eConsistently check the value (also for non-routing drivers)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.exceptions.UnsupportedServerProduct\u003c/code\u003e if no common bolt protocol version could be negotiated with the server\n(instead of internal \u003ccode\u003eneo4j._exceptions.BoltHandshakeError\u003c/code\u003e).\u003cbr /\u003e\n\u003ccode\u003eUnsupportedServerProduct\u003c/code\u003e is now a subclass of \u003ccode\u003eConfigurationError\u003c/code\u003e (instead of \u003ccode\u003eException\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econnection_acquisition_timeout\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eValueError\u003c/code\u003e on invalid values (instead of \u003ccode\u003eClientError\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\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/neo4j/neo4j-python-driver/commit/4a3fcdfc325c5ff11a92b6190c179853ad4c5b96\"\u003e\u003ccode\u003e4a3fcdf\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a56e7f6aada9ec53465a4428cb7334be15c601f2\"\u003e\u003ccode\u003ea56e7f6\u003c/code\u003e\u003c/a\u003e Unify connection error handling between async and sync (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/fc4811d195f7b48049abed22992c44e57e2016ec\"\u003e\u003ccode\u003efc4811d\u003c/code\u003e\u003c/a\u003e Fix: connection_acquisition_timeout now covers TLS handshake (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/c8c4e5b7ad420c0c4f4278d2fff896f6a9983815\"\u003e\u003ccode\u003ec8c4e5b\u003c/code\u003e\u003c/a\u003e Docs: Fix outdated preview notes (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/8c7c19bc80f33095f08d34c454292a69430dcae8\"\u003e\u003ccode\u003e8c7c19b\u003c/code\u003e\u003c/a\u003e Add .semgrepignore (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1270\"\u003e#1270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a0819c233664e87e24c251e2e29eea24738d63bb\"\u003e\u003ccode\u003ea0819c2\u003c/code\u003e\u003c/a\u003e Fix AttributeError when pool is None in Bolt3 error handling (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/4fc39f3e6f3ea53e2987cd30d47412b36a5f7025\"\u003e\u003ccode\u003e4fc39f3\u003c/code\u003e\u003c/a\u003e Python 3.14 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1264\"\u003e#1264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/compare/6.0.3...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.1.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle connection attributes conditionally for metrics and set connection data on exceptions in cluster error handling (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3964\"\u003e#3964\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved batch_size and consumer_name attributes from OTel metrics (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3978\"\u003e#3978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixing error handling of connection buffer purging of closed connections. Enabling troubleshooting logging for maintenance notifications e2e tests. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3971\"\u003e#3971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix protocol validation: replace finally with else and store parsed int (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3965\"\u003e#3965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn copies from _get_free/in_use_connections and fix async _mock (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing shard channel message types to async PubSub (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues with ClusterPipeline connection management (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3804\"\u003e#3804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(pubsub): avoid UnicodeDecodeError on reconnect with binary channel names (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3944\"\u003e#3944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/dotlambda\"\u003e\u003ccode\u003e@​dotlambda\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rhoboro\"\u003e\u003ccode\u003e@​rhoboro\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/skylarkoo7\"\u003e\u003ccode\u003e@​skylarkoo7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/praboud\"\u003e\u003ccode\u003e@​praboud\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/abf5bcb2ded3f393cd3d74803b058df325e3755c\"\u003e\u003ccode\u003eabf5bcb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b0303bf90792cfdfff951f446c71ec7baf83e0e\"\u003e\u003ccode\u003e5b0303b\u003c/code\u003e\u003c/a\u003e fix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e9fba8689f74e4aea45c8b9d75e517e29c54a76a\"\u003e\u003ccode\u003ee9fba86\u003c/code\u003e\u003c/a\u003e Added OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7ce513d262288fb2d79a1d59dff0cf5ff0cb13b0\"\u003e\u003ccode\u003e7ce513d\u003c/code\u003e\u003c/a\u003e fix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8e3a5b2f10677c58951fd04f79db1802f79a9bea\"\u003e\u003ccode\u003e8e3a5b2\u003c/code\u003e\u003c/a\u003e remove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b46430e23748d85140b143cbce02523e284482e\"\u003e\u003ccode\u003e5b46430\u003c/code\u003e\u003c/a\u003e Hold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.1.0...v7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/jychp/engramcp/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jychp%2Fengramcp/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"},{"uuid":"4119184945","node_id":"PR_kwDOROLWo87Mm-cP","number":47,"state":"open","title":"chore(deps): Bump the python-minor group across 1 directory with 10 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-23T08:35:16.000Z","updated_at":"2026-03-23T08:35:17.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":10,"packages":[{"name":"fastapi","old_version":"0.133.0","new_version":"0.135.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.42.0"},{"name":"sqlalchemy","old_version":"2.0.47","new_version":"2.0.48"},{"name":"geoalchemy2","old_version":"0.18.3","new_version":"0.18.4","repository_url":"https://github.com/geoalchemy/geoalchemy2"},{"name":"redis","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"sentry-sdk","old_version":"2.53.0","new_version":"2.55.0"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"ruff","old_version":"0.15.2","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 10 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.133.0` | `0.135.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.42.0` |\n| [sqlalchemy[asyncio]](https://github.com/sqlalchemy/sqlalchemy) | `2.0.47` | `2.0.48` |\n| [geoalchemy2](https://github.com/geoalchemy/geoalchemy2) | `0.18.3` | `0.18.4` |\n| [redis](https://github.com/redis/redis-py) | `7.2.0` | `7.3.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [sentry-sdk[fastapi]](https://github.com/getsentry/sentry-python) | `2.53.0` | `2.55.0` |\n| [testcontainers[postgres,redis]](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.2` | `0.15.7` |\n\n\nUpdates `fastapi` from 0.133.0 to 0.135.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.135.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed in the request async exit stack. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15038\"\u003e#15038\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15007\"\u003e#15007\u003c/a\u003e by \u003ca href=\"https://github.com/adityagiri3600\"\u003e\u003ccode\u003e@​adityagiri3600\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Skill, optimize context, trim and refactor into references. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15031\"\u003e#15031\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/15037\"\u003e#15037\u003c/a\u003e 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/15029\"\u003e#15029\u003c/a\u003e 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/15036\"\u003e#15036\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.135.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Server Sent Events. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15030\"\u003e#15030\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/server-sent-events/\"\u003eServer-Sent Events (SSE)\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.134.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for streaming JSON Lines and binary data with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15022\"\u003e#15022\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\u003eThis also upgrades Starlette from \u003ccode\u003e\u0026gt;=0.40.0\u003c/code\u003e to \u003ccode\u003e\u0026gt;=0.46.0\u003c/code\u003e, as it's needed to properly unrwap and re-raise exceptions from exception groups.\u003c/li\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/stream-json-lines/\"\u003eStream JSON Lines\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAnd new docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/stream-data/\"\u003eStream Data\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📝 Update Library Agent Skill with streaming responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15024\"\u003e#15024\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs for responses and new stream with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15023\"\u003e#15023\u003c/a\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\u003eawait\u003c/code\u003e in \u003ccode\u003eStreamingResponse\u003c/code\u003e code example to allow cancellation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14681\"\u003e#14681\u003c/a\u003e by \u003ca href=\"https://github.com/casperdcl\"\u003e\u003ccode\u003e@​casperdcl\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Rename \u003ccode\u003edocs_src/websockets\u003c/code\u003e to \u003ccode\u003edocs_src/websockets_\u003c/code\u003e to avoid import errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14979\"\u003e#14979\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🔨 Run tests with \u003ccode\u003epytest-xdist\u003c/code\u003e and \u003ccode\u003epytest-cov\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14992\"\u003e#14992\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.133.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add FastAPI Agent Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14982\"\u003e#14982\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 more about it in \u003ca href=\"https://tiangolo.com/ideas/library-agent-skills/\"\u003eLibrary Agent Skills\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Fix all tests are skipped on Windows. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14994\"\u003e#14994\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\u003c/blockquote\u003e\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/ca5f60ee72f35fb2134d8b5d26bbb75965bcff66\"\u003e\u003ccode\u003eca5f60e\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/87f75aa62c1dde90f4dfbfa7fc2c33127d757d34\"\u003e\u003ccode\u003e87f75aa\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a9258b169dce3e321f614c14b1877c18750d6c7\"\u003e\u003ccode\u003e8a9258b\u003c/code\u003e\u003c/a\u003e 🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/60385078233e00f9f13307ff038f12f88fc5c240\"\u003e\u003ccode\u003e6038507\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c796ba4f46a6e81477ce44eabe13fd01d82f2c4a\"\u003e\u003ccode\u003ec796ba4\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15037\"\u003e#15037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b24aa03b888b78dd2ec6540d47c84a8676d6a7cb\"\u003e\u003ccode\u003eb24aa03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c6104752a97273976c8a63e897de98a48f19ce0\"\u003e\u003ccode\u003e2c61047\u003c/code\u003e\u003c/a\u003e ✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15007\"\u003e#15007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3bbeef8a2687fdf34d4de2d304a59135a30e63c\"\u003e\u003ccode\u003ee3bbeef\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d726c8cb2b8e00279487fa8661a5276d2ff2125f\"\u003e\u003ccode\u003ed726c8c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cf514e6d3839ca69ca45a55a6f862e74892339b9\"\u003e\u003ccode\u003ecf514e6\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Contributors and Translators (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15029\"\u003e#15029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.133.0...0.135.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.41.0 to 0.42.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[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2825\"\u003eKludex/uvicorn#2825\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.41.0...0.42.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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\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/02bed6f8c38e74f684bb0e572977a9bfdc1f6fea\"\u003e\u003ccode\u003e02bed6f\u003c/code\u003e\u003c/a\u003e Version 0.42.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d8f25013161d8206e129e39bf48432d3a85e1744\"\u003e\u003ccode\u003ed8f2501\u003c/code\u003e\u003c/a\u003e chore: pre-create Config objects in benchmarks to measure protocol hot paths ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9dbb7836bb0fdb446d083ecd8dc5a2a95bb96b98\"\u003e\u003ccode\u003e9dbb783\u003c/code\u003e\u003c/a\u003e Add WebSocket protocol benchmarks for wsproto and websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b3c69da8c1a36e1834e614abe38243671e156077\"\u003e\u003ccode\u003eb3c69da\u003c/code\u003e\u003c/a\u003e Use bytearray for request body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3f3ebee20f46504a3f7279dd72f9c24ce9070b11\"\u003e\u003ccode\u003e3f3ebee\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epytest-xdist\u003c/code\u003e for CodSpeed benchmark runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d072de754f825bee4710363dd49d41efd5285dcc\"\u003e\u003ccode\u003ed072de7\u003c/code\u003e\u003c/a\u003e Add fragmented body benchmark for chunked body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2846\"\u003e#2846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/e300c2c75d71bea6f8d1799ca6f182f1e5583aaa\"\u003e\u003ccode\u003ee300c2c\u003c/code\u003e\u003c/a\u003e Add CodSpeed benchmark suite for HTTP protocol hot paths (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1fa697651bacf10d72f74de104ead814ce6fcdc0\"\u003e\u003ccode\u003e1fa6976\u003c/code\u003e\u003c/a\u003e Escape brackets and backslash in httptools HEADER_RE regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/59ec1de7a4f07afbd139812f033f3af8b784de74\"\u003e\u003ccode\u003e59ec1de\u003c/code\u003e\u003c/a\u003e Fix multiple issues in websockets sansio implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2fc0efcdd958abd3adbe6ea19682408d6b2e1b18\"\u003e\u003ccode\u003e2fc0efc\u003c/code\u003e\u003c/a\u003e Clarify Windows asyncio event loop selection in docs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2843\"\u003e#2843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy[asyncio]` from 2.0.47 to 2.0.48\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[asyncio]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.48\u003c/h1\u003e\n\u003cp\u003eReleased: March 2, 2026\u003c/p\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Fixed a critical issue in \u003ccode\u003eEngine\u003c/code\u003e where connections created in\nconjunction with the \u003ccode\u003eDialectEvents.do_connect()\u003c/code\u003e event listeners\nwould receive shared, mutable collections for the connection arguments,\nleading to a variety of potential issues including unlimited growth of the\nargument list as well as elements within the parameter dictionary being\nshared among concurrent connection calls.  In particular this could impact\ndo_connect routines making use of complex mutable authentication\nstructures.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13144\"\u003e#13144\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\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 `geoalchemy2` from 0.18.3 to 0.18.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/geoalchemy/geoalchemy2/releases\"\u003egeoalchemy2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.18.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: fix shapely import by \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/588\"\u003egeoalchemy/geoalchemy2#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: fix setuptools deprecation warning by \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/589\"\u003egeoalchemy/geoalchemy2#589\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Make Coveralls optional since the service is down at the moment by \u003ca href=\"https://github.com/adrien-berchet\"\u003e\u003ccode\u003e@​adrien-berchet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/590\"\u003egeoalchemy/geoalchemy2#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: try the official Coveralls action by \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/592\"\u003egeoalchemy/geoalchemy2#592\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease: 0.18.4 by \u003ca href=\"https://github.com/adrien-berchet\"\u003e\u003ccode\u003e@​adrien-berchet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/591\"\u003egeoalchemy/geoalchemy2#591\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/geoalchemy/geoalchemy2/compare/0.18.3...0.18.4\"\u003ehttps://github.com/geoalchemy/geoalchemy2/compare/0.18.3...0.18.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/geoalchemy/geoalchemy2/blob/main/CHANGES.txt\"\u003egeoalchemy2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.18.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Move to the official Coveralls action - \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: fix setuptools deprecation warning - \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Fix shapely import - \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/588\"\u003e#588\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/geoalchemy/geoalchemy2/commit/beb96c39754704a2ec712de3857d72b8a8ecc4d3\"\u003e\u003ccode\u003ebeb96c3\u003c/code\u003e\u003c/a\u003e Release: 0.18.4 (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/6266c25a12b3d406c403db2112e7c55bf3739d97\"\u003e\u003ccode\u003e6266c25\u003c/code\u003e\u003c/a\u003e CI: Move to the official Coveralls action (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/f402f6347454374b7719e612a5ebe5a1a766c8fa\"\u003e\u003ccode\u003ef402f63\u003c/code\u003e\u003c/a\u003e CI: Make Coveralls optional since the service is down at the moment (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/36ebd0f650d1c60b2e24c896d4662818f0162414\"\u003e\u003ccode\u003e36ebd0f\u003c/code\u003e\u003c/a\u003e Fix: fix setuptools deprecation warning (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/f11a1dadb94a31272cb58f3ef04f07490d174d34\"\u003e\u003ccode\u003ef11a1da\u003c/code\u003e\u003c/a\u003e Fix: Fix shapely import (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/geoalchemy/geoalchemy2/compare/0.18.3...0.18.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.2.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle connection attributes conditionally for metrics and set connection data on exceptions in cluster error handling (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3964\"\u003e#3964\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved batch_size and consumer_name attributes from OTel metrics (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3978\"\u003e#3978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixing error handling of connection buffer purging of closed connections. Enabling troubleshooting logging for maintenance notifications e2e tests. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3971\"\u003e#3971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix protocol validation: replace finally with else and store parsed int (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3965\"\u003e#3965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn copies from _get_free/in_use_connections and fix async _mock (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing shard channel message types to async PubSub (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues with ClusterPipeline connection management (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3804\"\u003e#3804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(pubsub): avoid UnicodeDecodeError on reconnect with binary channel names (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3944\"\u003e#3944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/dotlambda\"\u003e\u003ccode\u003e@​dotlambda\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rhoboro\"\u003e\u003ccode\u003e@​rhoboro\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/skylarkoo7\"\u003e\u003ccode\u003e@​skylarkoo7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/praboud\"\u003e\u003ccode\u003e@​praboud\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\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/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/abf5bcb2ded3f393cd3d74803b058df325e3755c\"\u003e\u003ccode\u003eabf5bcb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b0303bf90792cfdfff951f446c71ec7baf83e0e\"\u003e\u003ccode\u003e5b0303b\u003c/code\u003e\u003c/a\u003e fix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e9fba8689f74e4aea45c8b9d75e517e29c54a76a\"\u003e\u003ccode\u003ee9fba86\u003c/code\u003e\u003c/a\u003e Added OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7ce513d262288fb2d79a1d59dff0cf5ff0cb13b0\"\u003e\u003ccode\u003e7ce513d\u003c/code\u003e\u003c/a\u003e fix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8e3a5b2f10677c58951fd04f79db1802f79a9bea\"\u003e\u003ccode\u003e8e3a5b2\u003c/code\u003e\u003c/a\u003e remove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b46430e23748d85140b143cbce02523e284482e\"\u003e\u003ccode\u003e5b46430\u003c/code\u003e\u003c/a\u003e Hold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.2.0...v7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\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/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk[fastapi]` from 2.53.0 to 2.55.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[fastapi]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring spans 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to spans 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool spans 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration 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/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\u003c/code\u003e 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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\u003c/code\u003e 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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\u003e\n\u003c!-- 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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk[fastapi]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring spans 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to spans 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool spans 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration 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/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\u003c/code\u003e 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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\u003c/code\u003e 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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/038a429023b9092503f65d554e7c2ad230bba542\"\u003e\u003ccode\u003e038a429\u003c/code\u003e\u003c/a\u003e release: 2.55.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b29c4bb5ed300d63b4f78eeb1c69c1c6e0f9ec9b\"\u003e\u003ccode\u003eb29c4bb\u003c/code\u003e\u003c/a\u003e fix(logging): Fix deadlock in log batcher (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5684\"\u003e#5684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b905cd3297fd824fc0f7ce41c9d67a4e85b43fc2\"\u003e\u003ccode\u003eb905cd3\u003c/code\u003e\u003c/a\u003e feat(anthropic): Record finish reasons in AI monitoring spans (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5678\"\u003e#5678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6ea663f71d404bf7a261f31a22602ed85fb93544\"\u003e\u003ccode\u003e6ea663f\u003c/code\u003e\u003c/a\u003e fix(langchain): Wrap finish_reason in array for gen_ai span attribute (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5666\"\u003e#5666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6345af9598de0dd730e85048e5fc68733bbd8b98\"\u003e\u003ccode\u003e6345af9\u003c/code\u003e\u003c/a\u003e fix(ai): Truncate list-based message content in AI monitoring (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5631\"\u003e#5631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/01346a9f2d6c900fed8d830c31143a6c089f0fc2\"\u003e\u003ccode\u003e01346a9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/create-github-app-token from 2.2.1 to 3.0.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5667\"\u003e#5667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b946246062956e5228329b3a140c1ad3891800b\"\u003e\u003ccode\u003e0b94624\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/testing-ai-sdk-integrations from 285c012e522f2415...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/39cf94d458093392c78f92aa167f566827b0f30d\"\u003e\u003ccode\u003e39cf94d\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/craft from 2.23.1 to 2.24.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5668\"\u003e#5668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/ada153bcdc96813064bacccbc523d66cc1368dfe\"\u003e\u003ccode\u003eada153b\u003c/code\u003e\u003c/a\u003e ref: Add cont profiling support to span first (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b5f4f85b7d7fd93a6f8dc7932e6b3599c7b3da9\"\u003e\u003ccode\u003e0b5f4f8\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (03/16) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.53.0...2.55.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers[postgres,redis]` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers[postgres,redis]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers[postgres,redis]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.4 to 7.13.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\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/coveragepy/coveragepy/commit/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\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.2 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\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.7/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.7/ruff-installer.ps1 | iex\u0026quot;\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.2...0.15.7\"\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/MK023/TorinoParking/pull/47","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MK023%2FTorinoParking/issues/47","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/47/packages"},{"uuid":"4104669446","node_id":"PR_kwDOK-Z_Yc7L_cid","number":15,"state":"open","title":"chore(deps-dev): bump the development-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-19T22:56:24.000Z","updated_at":"2026-03-19T23:13:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"development-dependencies","update_count":3,"packages":[{"name":"ruff","old_version":"0.15.5","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"prek","old_version":"0.3.5","new_version":"0.3.6","repository_url":"https://github.com/j178/prek"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the development-dependencies group with 3 updates: [ruff](https://github.com/astral-sh/ruff), [prek](https://github.com/j178/prek) and [testcontainers](https://github.com/testcontainers/testcontainers-python).\n\nUpdates `ruff` from 0.15.5 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\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.7/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.7/ruff-installer.ps1 | iex\u0026quot;\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.5 to 0.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-16.\u003c/p\u003e\n\u003ch3\u003eCall for testing\u003c/h3\u003e\n\u003cp\u003eIf you run prek in GitHub CI, please try \u003ca href=\"https://github.com/j178/prek-action/releases/tag/v2.0.0-beta.4\"\u003e\u003ccode\u003ej178/prek-action@v2.0.0-beta.4\u003c/code\u003e\u003c/a\u003e. The 2.0 beta series rewrites the action in TypeScript, adds semver range support for \u003ccode\u003eprek-version\u003c/code\u003e, and verifies downloaded prek archives with published SHA-256 checksums. We'd appreciate any bug reports.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow selectors for hook ids containing colons (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1782\"\u003e#1782\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eprek install-hooks\u003c/code\u003e to \u003ccode\u003eprek prepare-hooks\u003c/code\u003e and \u003ccode\u003eprek install --install-hooks\u003c/code\u003e to \u003ccode\u003eprek install --prepare-hooks\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1766\"\u003e#1766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry auth-failed repo clones with terminal prompts enabled (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize \u003ccode\u003edetect_private_key\u003c/code\u003e by chunked reading and using aho-corasick (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003efix_byte_order_marker\u003c/code\u003e by shifting file contents in place (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign stage defaulting behavior with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake sure child output is drained in the PTY subprocess (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1768\"\u003e#1768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(golang): use \u003ccode\u003eGOTOOLCHAIN=local\u003c/code\u003e when probing system go (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisambiguate “hook” terminology by renaming \u0026quot;Git hooks\u0026quot; to \u0026quot;Git shims\u0026quot; (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1776\"\u003e#1776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument compatibility with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1767\"\u003e#1767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate configuration.md with TOML 1.1 notes (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1764\"\u003e#1764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync latest identify tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1798\"\u003e#1798\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/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pcastellazzi\"\u003e\u003ccode\u003e@​pcastellazzi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/deadnews\"\u003e\u003ccode\u003e@​deadnews\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.6\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://github.com/j178/prek/releases/download/v0.3.6/prek-installer.sh | sh\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-16.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow selectors for hook ids containing colons (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1782\"\u003e#1782\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eprek install-hooks\u003c/code\u003e to \u003ccode\u003eprek prepare-hooks\u003c/code\u003e and \u003ccode\u003eprek install --install-hooks\u003c/code\u003e to \u003ccode\u003eprek install --prepare-hooks\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1766\"\u003e#1766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry auth-failed repo clones with terminal prompts enabled (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize \u003ccode\u003edetect_private_key\u003c/code\u003e by chunked reading and using aho-corasick (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003efix_byte_order_marker\u003c/code\u003e by shifting file contents in place (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign stage defaulting behavior with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake sure child output is drained in the PTY subprocess (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1768\"\u003e#1768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(golang): use \u003ccode\u003eGOTOOLCHAIN=local\u003c/code\u003e when probing system go (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisambiguate “hook” terminology by renaming \u0026quot;Git hooks\u0026quot; to \u0026quot;Git shims\u0026quot; (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1776\"\u003e#1776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument compatibility with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1767\"\u003e#1767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate configuration.md with TOML 1.1 notes (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1764\"\u003e#1764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync latest identify tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1798\"\u003e#1798\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/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pcastellazzi\"\u003e\u003ccode\u003e@​pcastellazzi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/deadnews\"\u003e\u003ccode\u003e@​deadnews\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\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/j178/prek/commit/dd53c3d715e3a94dc7ecc947891b9887371e21fe\"\u003e\u003ccode\u003edd53c3d\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.6 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1811\"\u003e#1811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/ae0f62f07bda7c6b57c5ae85ec58b4d2821866aa\"\u003e\u003ccode\u003eae0f62f\u003c/code\u003e\u003c/a\u003e Bump prek-action to v2.0.0-beta.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1810\"\u003e#1810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34641f1e5d1ba673cdd573586684296c6636e0c9\"\u003e\u003ccode\u003e34641f1\u003c/code\u003e\u003c/a\u003e fix(golang): use \u003ccode\u003eGOTOOLCHAIN=local\u003c/code\u003e when probing system go\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/d1f84d5a2bfd74a5e5155cc69f4fe83e979056e3\"\u003e\u003ccode\u003ed1f84d5\u003c/code\u003e\u003c/a\u003e Update MSRV to v1.92.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1806\"\u003e#1806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/b4a252fa34c43c7e6a430ce97b2e7d5f783e182b\"\u003e\u003ccode\u003eb4a252f\u003c/code\u003e\u003c/a\u003e Sync latest identify tags (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1798\"\u003e#1798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/804eff2fb6b27c2055f391757a0b76dfd4f74451\"\u003e\u003ccode\u003e804eff2\u003c/code\u003e\u003c/a\u003e Fix minimumReleaseAge for MSRV (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1809\"\u003e#1809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/56f76237d6d8b27a203a91e58b4213d9c82c885f\"\u003e\u003ccode\u003e56f7623\u003c/code\u003e\u003c/a\u003e Update GitHub Actions (major) (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1808\"\u003e#1808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/5c268afebbc4ea9bb87291ebd70fe1857e9b88d3\"\u003e\u003ccode\u003e5c268af\u003c/code\u003e\u003c/a\u003e Update Rust crate toml to v1.0.6 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1803\"\u003e#1803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/88c8de2f44f4bb567e022b62e51ede902a8208d7\"\u003e\u003ccode\u003e88c8de2\u003c/code\u003e\u003c/a\u003e Update Rust crate toml_edit to v0.25.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1804\"\u003e#1804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/fe694c56161dc3005521b61411ddf65eaabe6d53\"\u003e\u003ccode\u003efe694c5\u003c/code\u003e\u003c/a\u003e Update pre-commit hook crate-ci/typos to v1.44.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1807\"\u003e#1807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.5...v0.3.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/adriantomas/pydamodb/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriantomas%2Fpydamodb/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4007062427","node_id":"PR_kwDOARnX5M7HHp5S","number":1010,"state":"open","title":"Bump testcontainers from 4.14.0 to 4.14.1","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-03-01T12:22:49.000Z","updated_at":"2026-03-01T12:33:22.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"testcontainers","old_version":"4.14.0","new_version":"4.14.1","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps [testcontainers](https://github.com/testcontainers/testcontainers-python) from 4.14.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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003e\u003ccode\u003ebe4d09e\u003c/code\u003e\u003c/a\u003e fix: Allow passing in a custom wait strategy string in MySQL, Cassandra, Kafk...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=testcontainers\u0026package-manager=pip\u0026previous-version=4.14.0\u0026new-version=4.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/aio-libs/aiodocker/pull/1010","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aio-libs%2Faiodocker/issues/1010","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1010/packages"},{"uuid":"3994732613","node_id":"PR_kwDOQtRsU87GgCyT","number":799,"state":"closed","title":"chore(deps): bump the plant-python-deps group in /src/Plant/BackEnd with 49 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-28T11:33:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-26T10:41:45.000Z","updated_at":"2026-02-28T11:33:35.000Z","time_to_close":175902,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"plant-python-deps","update_count":49,"packages":[{"name":"pytest","old_version":"7.4.4","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"0.23.3","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"4.1.0","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-benchmark","old_version":"4.0.0","new_version":"5.2.3","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"testcontainers","old_version":"3.7.1","new_version":"4.14.1","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"sqlalchemy","old_version":"2.0.25","new_version":"2.0.47","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pgvector","old_version":"0.2.4","new_version":"0.4.2","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"pydantic","old_version":"2.5.0","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"cryptography","old_version":"42.0.2","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"redis","old_version":"5.0.1","new_version":"7.2.1","repository_url":"https://github.com/redis/redis-py"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/mpdavis/python-jose"},{"name":"mypy","old_version":"1.8.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.7.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"hypothesis","old_version":"6.100.1","new_version":"6.151.9","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"pytest-bdd","old_version":"7.1.2","new_version":"8.1.0","repository_url":"https://github.com/pytest-dev/pytest-bdd"},{"name":"fastapi","old_version":"0.117.1","new_version":"0.133.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.27.0","new_version":"0.41.0"},{"name":"uvloop","old_version":"0.19.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"httptools","old_version":"0.6.1","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"websockets","old_version":"12.0","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"watchfiles","old_version":"0.21.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"email-validator","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"greenlet","old_version":"3.0.3","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"alembic","old_version":"1.13.1","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"hiredis","old_version":"2.3.2","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"apscheduler","old_version":"3.10.4","new_version":"3.11.2","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"celery","old_version":"5.3.6","new_version":"5.6.2"},{"name":"temporalio","old_version":"1.5.1","new_version":"1.23.0","repository_url":"https://github.com/temporalio/sdk-python"},{"name":"python-jose","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/mpdavis/python-jose"},{"name":"google-auth","old_version":"2.37.0","new_version":"2.48.0"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"tenacity","old_version":"8.2.3","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"pytest-mock","old_version":"3.12.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"faker","old_version":"40.1.2","new_version":"40.5.1","repository_url":"https://github.com/joke2k/faker"},{"name":"black","old_version":"24.3.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.0.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"prometheus-client","old_version":"0.19.0","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"opentelemetry-api","old_version":"1.22.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.22.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-gcp-trace","old_version":"1.6.0","new_version":"1.11.0","repository_url":"https://github.com/GoogleCloudPlatform/opentelemetry-operations-python"},{"name":"opentelemetry-propagator-gcp","old_version":"1.6.0","new_version":"1.11.0","repository_url":"https://github.com/GoogleCloudPlatform/opentelemetry-operations-python"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.43b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.43b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.43b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":"/src/Plant/BackEnd","ecosystem":"pip"},"body":"Bumps the plant-python-deps group in /src/Plant/BackEnd with 49 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `7.4.4` | `9.0.2` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.23.3` | `1.3.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `4.1.0` | `7.0.0` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `4.0.0` | `5.2.3` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `3.7.1` | `4.14.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.25` | `2.0.47` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.11` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.2.4` | `0.4.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.0` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.13.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `42.0.2` | `46.0.5` |\n| [redis](https://github.com/redis/redis-py) | `5.0.1` | `7.2.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-jose](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.19.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.6` | `1.9.4` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.100.1` | `6.151.9` |\n| [pytest-bdd](https://github.com/pytest-dev/pytest-bdd) | `7.1.2` | `8.1.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.117.1` | `0.133.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.27.0` | `0.41.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.19.0` | `0.22.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.1` | `0.7.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `12.0` | `16.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `0.21.0` | `1.1.1` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.1.0` | `2.3.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.3` | `3.3.2` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.1` | `1.18.4` |\n| [hiredis](https://github.com/redis/hiredis-py) | `2.3.2` | `3.3.0` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.10.4` | `3.11.2` |\n| [celery[redis]](https://github.com/celery/celery) | `5.3.6` | `5.6.2` |\n| [temporalio](https://github.com/temporalio/sdk-python) | `1.5.1` | `1.23.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.4.0` | `3.5.0` |\n| [google-auth[requests]](https://github.com/googleapis/google-auth-library-python) | `2.37.0` | `2.48.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [tenacity](https://github.com/jd/tenacity) | `8.2.3` | `9.1.4` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.12.0` | `3.15.1` |\n| [faker](https://github.com/joke2k/faker) | `40.1.2` | `40.5.1` |\n| [black](https://github.com/psf/black) | `24.3.0` | `26.1.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.19.0` | `0.24.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.22.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.22.0` | `1.39.1` |\n| [opentelemetry-exporter-gcp-trace](https://github.com/GoogleCloudPlatform/opentelemetry-operations-python) | `1.6.0` | `1.11.0` |\n| [opentelemetry-propagator-gcp](https://github.com/GoogleCloudPlatform/opentelemetry-operations-python) | `1.6.0` | `1.11.0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.43b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.43b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.43b0` | `0.60b1` |\n\nUpdates `pytest` from 7.4.4 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/7.4.4...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 0.23.3 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/pytest-dev/pytest-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio 1.3.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.3.0\"\u003e1.3.0\u003c/a\u003e - 2025-11-10\u003c/h1\u003e\n\u003ch2\u003eRemoved\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pytest 9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1279\"\u003e#1279\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTested Python versions include free threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTests are run in the same pytest process, instead of spawning a subprocess with \u003ccode\u003epytest.Pytester.runpytest_subprocess\u003c/code\u003e. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.2.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.2.0\"\u003e1.2.0\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e--asyncio-debug\u003c/code\u003e CLI option and \u003ccode\u003easyncio_debug\u003c/code\u003e configuration option to enable asyncio debug mode for the default event loop. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003epytest.UsageError\u003c/code\u003e for invalid configuration values of \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e and \u003ccode\u003easyncio_default_test_loop_scope\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1189\"\u003e#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility with the Pyright type checker (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRuntimeError: There is no current event loop in thread 'MainThread'\u003c/code\u003e when any test unsets the event loop (such as when using \u003ccode\u003easyncio.run\u003c/code\u003e and \u003ccode\u003easyncio.Runner\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1177\"\u003e#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecation warning when decorating an asynchronous fixture with \u003ccode\u003e@pytest.fixture\u003c/code\u003e in [strict]{.title-ref} mode. The warning message now refers to the correct package. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the minimum required version of tox to v4.28. This change is only relevant if you use the \u003ccode\u003etox.ini\u003c/code\u003e file provided by pytest-asyncio to run tests.\u003c/li\u003e\n\u003cli\u003eExtend dependency on typing-extensions\u0026gt;=4.12 from Python\u0026lt;3.10 to Python\u0026lt;3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.1.1\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/v1.1.1\"\u003ev1.1.1\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cp\u003e- Addresses a build problem with setuptoos-scm \u0026gt;= 9 caused by invalid setuptools-scm configuration in pytest-asyncio. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1192\"\u003e#1192\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003epytest-asyncio 1.1.0\u003c/h2\u003e\n\u003ch1\u003eAdded\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePropagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancellation of tasks when the \u003ccode\u003eloop_scope\u003c/code\u003e ends (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/200\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarning when the current event loop is closed by a test\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixed\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/pytest-dev/pytest-asyncio/commit/2e9695fcf8c5c514f30f57b7d14ab83846357b96\"\u003e\u003ccode\u003e2e9695f\u003c/code\u003e\u003c/a\u003e docs: Compile changelog for v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/dd0e9ba3fa672fd6bf375004319742f8d3a50e12\"\u003e\u003ccode\u003edd0e9ba\u003c/code\u003e\u003c/a\u003e docs: Reference correct issue in news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4c31abe5bf46bca3c9bdc7b18405f3deba4145d0\"\u003e\u003ccode\u003e4c31abe\u003c/code\u003e\u003c/a\u003e Build(deps): Bump nh3 from 0.3.1 to 0.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/13e94770d7bb146c329ae0e02486c0a6b38f3772\"\u003e\u003ccode\u003e13e9477\u003c/code\u003e\u003c/a\u003e Link to migration guides from changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4d2cf3c36f47d7c4d563d401cdf229b35da34fbe\"\u003e\u003ccode\u003e4d2cf3c\u003c/code\u003e\u003c/a\u003e tests: handle Python 3.14 DefaultEventLoopPolicy deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ee3549b6efb729b934e370e2be8040b25b034010\"\u003e\u003ccode\u003eee3549b\u003c/code\u003e\u003c/a\u003e test: Remove obsolete test for the event_loop fixture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/7a67c82c5ae548f0968438e9dfa0f282d51c4597\"\u003e\u003ccode\u003e7a67c82\u003c/code\u003e\u003c/a\u003e tests: Fix failing test by preventing warning conversion to error.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a17b689a750d05b6fc9369f5fb2b06baaba83536\"\u003e\u003ccode\u003ea17b689\u003c/code\u003e\u003c/a\u003e test: add pytest config to isolated test directories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/18afc9df5a3153dc1fbdc4e11a56517ef95480df\"\u003e\u003ccode\u003e18afc9d\u003c/code\u003e\u003c/a\u003e fix(tests): replace runpytest_subprocess with runpytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/cdc6bd1de75b4738289eafd546f5e27a0bfd3b41\"\u003e\u003ccode\u003ecdc6bd1\u003c/code\u003e\u003c/a\u003e Add support for pytest 9 and drop Python 3.9 support\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.3...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 4.1.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0 (2025-09-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for subprocesses measurement.\u003c/p\u003e\n\u003cp\u003eIt was a feature added long time ago when coverage lacked a nice way to measure subprocesses created in tests.\nIt relied on a \u003ccode\u003e.pth\u003c/code\u003e file, there was no way to opt-out and it created bad interations\nwith \u003ccode\u003ecoverage's new patch system \u0026lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch\u0026gt;\u003c/code\u003e_ added\nin \u003ccode\u003e7.10 \u0026lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003eTo migrate to this release you might need to enable the suprocess patch, example for \u003ccode\u003e.coveragerc\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003e.. code-block:: ini\u003c/p\u003e\n\u003cp\u003e[run]\npatch = subprocess\u003c/p\u003e\n\u003cp\u003eThis release also requires at least coverage 7.10.6.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSwitched packaging to have metadata completely in \u003ccode\u003epyproject.toml\u003c/code\u003e and use \u003ccode\u003ehatchling \u0026lt;https://pypi.org/project/hatchling/\u0026gt;\u003c/code\u003e_ for\nbuilding.\nContributed by Ofek Lev in \u003ccode\u003e[#551](https://github.com/pytest-dev/pytest-cov/issues/551) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/551\u0026gt;\u003c/code\u003e_\nwith some extras in \u003ccode\u003e[#716](https://github.com/pytest-dev/pytest-cov/issues/716) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/716\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved some not really necessary testing deps like \u003ccode\u003esix\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.3.0 (2025-09-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for markdown reports.\nContributed by Marcos Boger in \u003ccode\u003e[#712](https://github.com/pytest-dev/pytest-cov/issues/712) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/712\u0026gt;\u003c/code\u003e_\nand \u003ccode\u003e[#714](https://github.com/pytest-dev/pytest-cov/issues/714) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/714\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed some formatting issues in docs.\nAnonymous contribution in \u003ccode\u003e[#706](https://github.com/pytest-dev/pytest-cov/issues/706) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/706\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.2.1 (2025-06-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a version requirement for pytest's pluggy dependency (1.2.0, released 2023-06-21) that has the required new-style hookwrapper API.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved deprecated license classifier (packaging).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisabled coverage warnings in two more situations where they have no value:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;module-not-measured\u0026quot; in workers\u003c/li\u003e\n\u003cli\u003e\u0026quot;already-imported\u0026quot; in subprocesses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.2.0 (2025-06-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe plugin now adds 3 rules in the filter warnings configuration to prevent common coverage warnings being raised as obscure errors::\u003c/p\u003e\n\u003cp\u003edefault:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\nonce::PytestCovWarning\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-cov/commit/224d8964caad90074a8cf6dc8720b8f70f31629b\"\u003e\u003ccode\u003e224d896\u003c/code\u003e\u003c/a\u003e Bump version: 6.3.0 → 7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/73424e3999f865eac72e27f09d5fe11b9703cfd6\"\u003e\u003ccode\u003e73424e3\u003c/code\u003e\u003c/a\u003e Cleanup the docs a bit.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/36f1cc2967831dbd4c8aa70086fc86dc495f8b9a\"\u003e\u003ccode\u003e36f1cc2\u003c/code\u003e\u003c/a\u003e Bump pins in template.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f299c590a63a48e51e3ae949993dc7bb1f1d480d\"\u003e\u003ccode\u003ef299c59\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/25f0b2e0cdbc345c0d3e49170f7a328c3e0d805f\"\u003e\u003ccode\u003e25f0b2e\u003c/code\u003e\u003c/a\u003e Update docs/config.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/bb23eacc5531fb8f499213d8420407e0d72f88e3\"\u003e\u003ccode\u003ebb23eac\u003c/code\u003e\u003c/a\u003e Improve configuration docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/a19531e91e1ab753ccf648a2d9bab08a6fddebb9\"\u003e\u003ccode\u003ea19531e\u003c/code\u003e\u003c/a\u003e Switch from build/pre-commit to uv/prek - this should make this faster.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/82f999391073f2fb8ae422af452602f310086a2a\"\u003e\u003ccode\u003e82f9993\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/211b5cd41c29916bc643b4a11b00578ba4fd6fe8\"\u003e\u003ccode\u003e211b5cd\u003c/code\u003e\u003c/a\u003e Fix links.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/97aadd74bcbc00a2078d240e8fe871dd62b83d80\"\u003e\u003ccode\u003e97aadd7\u003c/code\u003e\u003c/a\u003e Update some ci config, reformat and apply some lint fixes.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-benchmark` from 4.0.0 to 5.2.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ionelmc/pytest-benchmark/blob/master/CHANGELOG.rst\"\u003epytest-benchmark's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.3 (2025-11-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for pytest 9.0.\u003c/li\u003e\n\u003cli\u003eMoved the README.rst/CHANGELOG.rst concatenation from setup.py to pyproject.toml.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.2.2 (2025-11-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed auto-disable to work with newer xdist (pytest-benchmark auto disables benchmarks if xdist is enabled by design).\nContributed by Thomas B. Brunner in \u003ccode\u003e[#294](https://github.com/ionelmc/pytest-benchmark/issues/294) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/294\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.2.1 (2025-11-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd markers so pytest doesn't try to assert-rewrite the plugin internals\n(fixes those \u003ccode\u003epytest.PytestAssertRewriteWarning: Module already imported so cannot be rewritten; pytest_benchmark\u003c/code\u003e warnings).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.2.0 (2025-10-30)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for a per-round \u003ccode\u003eteardown\u003c/code\u003e function to pedantic mode.\nContributed Patrick Winter by \u003ccode\u003e[#264](https://github.com/ionelmc/pytest-benchmark/issues/264) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/264\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e--benchmark-time-unit\u003c/code\u003e option.\nContributed by Tony Kuo in \u003ccode\u003e[#281](https://github.com/ionelmc/pytest-benchmark/issues/281) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/281\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed deprecated hook examples in docstrings.\nContributed by Ali-Akber Saifee in \u003ccode\u003e[#284](https://github.com/ionelmc/pytest-benchmark/issues/284) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/284\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003e--benchmark-compare-fail\u003c/code\u003e to accept percentages higher than 100%.\nContributed by Ben Avrahami in \u003ccode\u003e[#280](https://github.com/ionelmc/pytest-benchmark/issues/280) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/280\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded minimal typing support.\nContributed by Sorin Sbarnea in \u003ccode\u003e[#290](https://github.com/ionelmc/pytest-benchmark/issues/290) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/290\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed support for Python 3.9.\nContributed by Enno Gotthold in \u003ccode\u003e[#291](https://github.com/ionelmc/pytest-benchmark/issues/291) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/291\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eReplaced the complicated and broken code of \u003ccode\u003epytest_benchmark.utils.clonefunc\u003c/code\u003e with a simple return of the input.\nThat function was supposed to allow benchmarking with the cost of PyPy JIT included but it's a hassle to maintain.\u003c/li\u003e\n\u003cli\u003eMoved the instrumentation pause outside the round loops (in addition to tracing, profiling is paused too).\nPedantic mode will keep doing this per round (as the user manually controls the round count).\nThis is necessary because in some scenarios setting and unsetting the tracer too much will overflow an internal counter\n(found to cause \u0026quot;OverflowError: events set too many times\u0026quot; at least on Python 3.13).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.1.0 (2024-10-30)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed broken hooks handling on pytest 8.1 or later (the \u003ccode\u003eTypeError: import_path() missing 1 required keyword-only argument: 'consider_namespace_packages'\u003c/code\u003e issue).\nUnfortunately this sets the minimum supported pytest version to 8.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.1 (2024-10-30)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bad fixture check that broke down then \u003ccode\u003enbmake \u0026lt;https://pypi.org/project/nbmake/\u0026gt;\u003c/code\u003e_ was enabled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/b857483dd8e8a875f3aa040bd0054847ad657291\"\u003e\u003ccode\u003eb857483\u003c/code\u003e\u003c/a\u003e Bump version: 5.2.2 → 5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/7f5abf98bb3212339d964e9a2621998c032a98f7\"\u003e\u003ccode\u003e7f5abf9\u003c/code\u003e\u003c/a\u003e Add a note about the readme.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/b8e5f5380f04a9ae26aa571c1c41a3671e2ac3bb\"\u003e\u003ccode\u003eb8e5f53\u003c/code\u003e\u003c/a\u003e Fix bad wrap.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/931d50ff1bb16c392f817801ad246eb27f55d4c5\"\u003e\u003ccode\u003e931d50f\u003c/code\u003e\u003c/a\u003e Add back some escapes. Oops.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/d5c2f7ef9d0bbd67d8bafac1e2a454c8aa95af10\"\u003e\u003ccode\u003ed5c2f7e\u003c/code\u003e\u003c/a\u003e Add support for pytest 9.0. Fixes \u003ca href=\"https://redirect.github.com/ionelmc/pytest-benchmark/issues/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/9a3888ad0474c0bb0e56c86f87a27d24ecc6a55a\"\u003e\u003ccode\u003e9a3888a\u003c/code\u003e\u003c/a\u003e Move readme+changelog extraction to static pyproject config.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/d34bf73c6bab8c11c660291f62a20ff0c004e241\"\u003e\u003ccode\u003ed34bf73\u003c/code\u003e\u003c/a\u003e Bump version: 5.2.1 → 5.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/cf2ac340f49518c6f89eb1de8fa9c68275ef6de6\"\u003e\u003ccode\u003ecf2ac34\u003c/code\u003e\u003c/a\u003e Bump prek.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/8bfc327c69997564eff09dfaa4a2fcf269545d36\"\u003e\u003ccode\u003e8bfc327\u003c/code\u003e\u003c/a\u003e Improve formatting (docutils chokes on those arguments with colons and bracke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/190b487045c4994fd51b7b7e04b0e02b5b34a41c\"\u003e\u003ccode\u003e190b487\u003c/code\u003e\u003c/a\u003e Prefix all headings with letters to allow docutils or whatever generate stabl...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ionelmc/pytest-benchmark/compare/v4.0.0...v5.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 3.7.1 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003epython 3.14 is now supported!\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Fix issues with doctests (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/893\"\u003e#893\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2e4d80ade5a2048c8bc79d7a2438004b8e0954e4\"\u003e2e4d80a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e waiting improvements + remove decorators in core (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/894\"\u003e#894\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f93f379380a9de769fe6a1e1168622865cdf613d\"\u003ef93f379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/889\"\u003e#889\u003c/a\u003e by changing the annotated return type of \u003ccode\u003ewaiting_for\u003c/code\u003e to \u003ccode\u003eSelf\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/890\"\u003e#890\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/fe941b17bb97aad15dc4844996f166c9308f4476\"\u003efe941b1\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Fix issues with doctests (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/893\"\u003e#893\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2e4d80ade5a2048c8bc79d7a2438004b8e0954e4\"\u003e2e4d80a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e waiting improvements + remove decorators in core (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/894\"\u003e#894\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f93f379380a9de769fe6a1e1168622865cdf613d\"\u003ef93f379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/889\"\u003e#889\u003c/a\u003e by changing the annotated return type of \u003ccode\u003ewaiting_for\u003c/code\u003e to \u003ccode\u003eSelf\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/890\"\u003e#890\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/fe941b17bb97aad15dc4844996f166c9308f4476\"\u003efe941b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emongo:\u003c/strong\u003e mongo start waiting forever for old mongo versions (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/783\"\u003e#783\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/13886120e9cb72666a40ea3691ea13e584805918\"\u003e1388612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eredpanda:\u003c/strong\u003e copy the startup script to a path that can be written … (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/867\"\u003e#867\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e6b976de43fc6fe90d7131fd25983f9c6b08429b\"\u003ee6b976d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etrino:\u003c/strong\u003e Remove deprecated class and decorator from Trino container (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/895\"\u003e#895\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/bb646e903236a1df72bc38dbb47d1dba95527198\"\u003ebb646e9\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/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003e\u003ccode\u003ebe4d09e\u003c/code\u003e\u003c/a\u003e fix: Allow passing in a custom wait strategy string in MySQL, Cassandra, Kafk...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/d7953b89208cdfbb1a19692dd9bf95b60ecfe4ac\"\u003e\u003ccode\u003ed7953b8\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.0 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/921\"\u003e#921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003e\u003ccode\u003eb7791b9\u003c/code\u003e\u003c/a\u003e fix(cassandra,mysqk,kafka): Use wait strategy instead of deprecated wait_for_...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/v3.7.1...testcontainers-v4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.25 to 2.0.47\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.47\u003c/h1\u003e\n\u003cp\u003eReleased: February 24, 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 when using ORM mappings with Python 3.14's \u003ca href=\"https://peps.python.org/pep-0649\"\u003ePEP 649\u003c/a\u003e feature\nthat no longer requires \u0026quot;future annotations\u0026quot;, where the ORM's introspection\nof the \u003ccode\u003e__init__\u003c/code\u003e method of mapped classes would fail if non-present\nidentifiers in annotations were present.  The vendored \u003ccode\u003egetfullargspec()\u003c/code\u003e\nmethod has been amended to use \u003ccode\u003eFormat.FORWARDREF\u003c/code\u003e under Python 3.14 to\nprevent resolution of names that aren't present.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13104\"\u003e#13104\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e The connection object returned by \u003ccode\u003e_engine.Engine.raw_connection()\u003c/code\u003e\nnow supports the context manager protocol, automatically returning the\nconnection to the pool when exiting the context.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13116\"\u003e#13116\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[postgresql] [bug]\u003c/strong\u003e Fixed an issue in the PostgreSQL dialect where foreign key constraint\nreflection would incorrectly swap or fail to capture \u003ccode\u003eonupdate\u003c/code\u003e and\n\u003ccode\u003eondelete\u003c/code\u003e values when these clauses appeared in a different order than\nexpected in the constraint definition. This issue primarily affected\nPostgreSQL-compatible databases such as CockroachDB, which may return \u003ccode\u003eON DELETE\u003c/code\u003e before \u003ccode\u003eON UPDATE\u003c/code\u003e in the constraint definition string. The\nreflection logic now correctly parses both clauses regardless of their\nordering.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13105\"\u003e#13105\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[postgresql] [bug]\u003c/strong\u003e Fixed issue in the \u003ccode\u003eengine_insertmanyvalues\u003c/code\u003e feature where using\nPostgreSQL's \u003ccode\u003eON CONFLICT\u003c/code\u003e clause with\n\u003ccode\u003e_dml.Insert.returning.sort_by_parameter_order\u003c/code\u003e enabled would\ngenerate invalid SQL when the insert used an implicit sentinel (server-side\nautoincrement primary key). The generated SQL would incorrectly declare a\nsentinel counter column in the \u003ccode\u003eimp_sen\u003c/code\u003e table alias without providing\ncorresponding values in the \u003ccode\u003eVALUES\u003c/code\u003e clause, leading to a\n\u003ccode\u003eProgrammingError\u003c/code\u003e indicating column count mismatch. The fix allows batch\nexecution mode when \u003ccode\u003eembed_values_counter\u003c/code\u003e is active, as the embedded\ncounter provides the ordering capability needed even with upsert behaviors,\nrather than unnecessarily downgrading to row-at-a-time execution.\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 `psycopg2-binary` from 2.9.9 to 2.9.11\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.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\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.9...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvector` from 0.2.4 to 0.4.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pgvector/pgvector-python/blob/master/CHANGELOG.md\"\u003epgvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.2 (2025-12-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Django 6\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003estr\u003c/code\u003e objects for \u003ccode\u003ebit\u003c/code\u003e type with SQLAlchemy\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.4.1 (2025-04-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eSparseVector\u003c/code\u003e constructor for SciPy sparse matrices\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.4.0 (2025-03-15)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded top-level \u003ccode\u003epgvector\u003c/code\u003e package\u003c/li\u003e\n\u003cli\u003eAdded support for pg8000\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003ebytes\u003c/code\u003e to \u003ccode\u003eBit\u003c/code\u003e constructor\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eglobally\u003c/code\u003e option to default to \u003ccode\u003eFalse\u003c/code\u003e for Psycopg 2\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003earrays\u003c/code\u003e option to default to \u003ccode\u003eTrue\u003c/code\u003e for Psycopg 2\u003c/li\u003e\n\u003cli\u003eFixed equality for \u003ccode\u003eVector\u003c/code\u003e, \u003ccode\u003eHalfVector\u003c/code\u003e, \u003ccode\u003eBit\u003c/code\u003e, and \u003ccode\u003eSparseVector\u003c/code\u003e classes\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eindices\u003c/code\u003e and \u003ccode\u003evalues\u003c/code\u003e methods of \u003ccode\u003eSparseVector\u003c/code\u003e returning tuple instead of list in some cases\u003c/li\u003e\n\u003cli\u003eDropped support for Python \u0026lt; 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.6 (2024-10-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003earrays\u003c/code\u003e option for Psycopg 2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.5 (2024-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eavg\u003c/code\u003e function with type casting to SQLAlchemy\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eglobally\u003c/code\u003e option for Psycopg 2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.4 (2024-09-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eschema\u003c/code\u003e option for asyncpg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.3 (2024-09-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved support for cursor factories with Psycopg 2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.2 (2024-07-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed error with asyncpg and pgvector \u0026lt; 0.7\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.1 (2024-07-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed error parsing zero sparse vectors\u003c/li\u003e\n\u003cli\u003eFixed error with Psycopg 2 and pgvector \u0026lt; 0.7\u003c/li\u003e\n\u003cli\u003eFixed error message when \u003ccode\u003evector\u003c/code\u003e type not found with Psycopg 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.0 (2024-06-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for \u003ccode\u003ehalfvec\u003c/code\u003e, \u003ccode\u003ebit\u003c/code\u003e, and \u003ccode\u003esparsevec\u003c/code\u003e types to Django\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/2968f258f9486531bd1340cbda4ff8fcaf06cdc1\"\u003e\u003ccode\u003e2968f25\u003c/code\u003e\u003c/a\u003e Version bump to 0.4.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/674f5ba3410c873d49f50fa9725b95d9db50c674\"\u003e\u003ccode\u003e674f5ba\u003c/code\u003e\u003c/a\u003e Updated checkout action [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/e2986daf2b1533cc2c849f7e39350e31d57ac325\"\u003e\u003ccode\u003ee2986da\u003c/code\u003e\u003c/a\u003e Added support for Django 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/e211ba4029f204734f0c001fbb90f6a594d561ae\"\u003e\u003ccode\u003ee211ba4\u003c/code\u003e\u003c/a\u003e Test with Python 3.14 on CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/1a72b7571adf3325174b383aca85bfb3a5b925fa\"\u003e\u003ccode\u003e1a72b75\u003c/code\u003e\u003c/a\u003e Updated pgvector on CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/c820a53bfb46196551de3c3f59f81b192d890574\"\u003e\u003ccode\u003ec820a53\u003c/code\u003e\u003c/a\u003e Simplified examples [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/caf1a2e0dd7a1ba2ad0ca9f09b50516dcfffcdeb\"\u003e\u003ccode\u003ecaf1a2e\u003c/code\u003e\u003c/a\u003e Added docs for binary quantization with SQLAlchemy [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/dc9a8f959995f009649fd230139ca41193e0a801\"\u003e\u003ccode\u003edc9a8f9\u003c/code\u003e\u003c/a\u003e Added test for binary quantization with re-ranking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/33dee606229489c9ffb0cb5a1cd72bd4705ac618\"\u003e\u003ccode\u003e33dee60\u003c/code\u003e\u003c/a\u003e Added support for str objects for bit type with SQLAlchemy - \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/ee3e71ca2c07a12a8332a3877c0ce14adc9a5da8\"\u003e\u003ccode\u003eee3e71c\u003c/code\u003e\u003c/a\u003e Updated format for license identifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pgvector/pgvector-python/compare/v0.2.4...v0.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.5.0 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/co...\n\n_Description has been truncated_","html_url":"https://github.com/dlai-sd/WAOOAW/pull/799","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlai-sd%2FWAOOAW/issues/799","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/799/packages"}],"issue_packages":[{"old_version":"\u003e=4.0.0","new_version":"\u003e=4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-06-04T06:04:31.000Z","version_change":"\u003e=4.0.0 → \u003e=4.14.2","issue":{"uuid":"4586269463","node_id":"PR_kwDOSWpz3M7ijPy4","number":79,"state":"closed","title":"chore(deps): update testcontainers requirement from \u003e=4.0.0 to \u003e=4.14.2","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-04T06:19:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-04T06:04:31.000Z","updated_at":"2026-06-04T06:20:01.000Z","time_to_close":928,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.0.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.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 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/PaynePew/qr_code_generator/pull/79","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PaynePew%2Fqr_code_generator/issues/79","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/79/packages"}},{"old_version":"\u003c5.0,\u003e=3.7.0","new_version":"\u003e=4.14.2,\u003c5.0","update_type":"minor","path":"/bdd/python","pr_created_at":"2026-05-28T20:50:52.000Z","version_change":"\u003c5.0,\u003e=3.7.0 → \u003e=4.14.2,\u003c5.0","issue":{"uuid":"4543724430","node_id":"PR_kwDOJLUvb87gZtcz","number":3346,"state":"closed","title":"chore(deps): update testcontainers requirement from \u003c5.0,\u003e=3.7.0 to \u003e=4.14.2,\u003c5.0 in /bdd/python","user":"dependabot[bot]","labels":["dependencies","python","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-28T21:15:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-28T20:50:52.000Z","updated_at":"2026-05-28T21:15:33.000Z","time_to_close":1470,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"testcontainers","old_version":"\u003c5.0,\u003e=3.7.0","new_version":"\u003e=4.14.2,\u003c5.0","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":"/bdd/python","ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/apache/iggy/pull/3346","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Figgy/issues/3346","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3346/packages"}},{"old_version":"4.9.0","new_version":"4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-05-19T02:37:09.000Z","version_change":"4.9.0 → 4.14.2","issue":{"uuid":"4473973386","node_id":"PR_kwDOSAObtM7c5Q9l","number":13,"state":"closed","title":"chore(deps): bump the minor-patch group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-06-20T20:45:28.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T02:37:09.000Z","updated_at":"2026-06-20T20:45:35.000Z","time_to_close":2830099,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-patch","update_count":21,"packages":[{"name":"fastapi","old_version":"0.115.6","new_version":"0.138.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.34.0","new_version":"0.49.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"websockets","old_version":"14.1","new_version":"14.2","repository_url":"https://github.com/python-websockets/websockets"},{"name":"pydantic","old_version":"2.10.4","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.7.1","new_version":"2.14.2","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"sqlalchemy","old_version":"2.0.36","new_version":"2.0.51","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"alembic","old_version":"1.14.0","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"psycopg","old_version":"3.2.3","new_version":"3.3.4","repository_url":"https://github.com/psycopg/psycopg"},{"name":"minio","old_version":"7.2.12","new_version":"7.2.20","repository_url":"https://github.com/minio/minio-py"},{"name":"redis","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/redis/redis-py"},{"name":"rq","old_version":"2.1.0","new_version":"2.10.0","repository_url":"https://github.com/rq/rq"},{"name":"tenacity","old_version":"9.0.0","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"pytest-asyncio","old_version":"0.25.2","new_version":"0.26.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"6.0.0","new_version":"6.3.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"testcontainers","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"faker","old_version":"33.3.0","new_version":"33.3.1","repository_url":"https://github.com/joke2k/faker"},{"name":"ruff","old_version":"0.9.1","new_version":"0.15.18","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.14.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-patch group with 21 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.6` | `0.138.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.0` | `0.49.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `14.1` | `14.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.10.4` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.7.1` | `2.14.2` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.36` | `2.0.51` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.14.0` | `1.18.4` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.3` | `3.3.4` |\n| [minio](https://github.com/minio/minio-py) | `7.2.12` | `7.2.20` |\n| [redis](https://github.com/redis/redis-py) | `5.2.1` | `5.3.1` |\n| [rq](https://github.com/rq/rq) | `2.1.0` | `2.10.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.0.0` | `9.1.4` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.25.2` | `0.26.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.0.0` | `6.3.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.9.0` | `4.14.2` |\n| [faker](https://github.com/joke2k/faker) | `33.3.0` | `33.3.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.1` | `0.15.18` |\n| [mypy](https://github.com/python/mypy) | `1.14.1` | `1.20.2` |\n\n\nUpdates `fastapi` from 0.115.6 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.115.6...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.34.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.34.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 `websockets` from 14.1 to 14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-websockets/websockets/releases\"\u003ewebsockets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://websockets.readthedocs.io/en/stable/project/changelog.html\"\u003ehttps://websockets.readthedocs.io/en/stable/project/changelog.html\u003c/a\u003e for details.\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/python-websockets/websockets/commit/624a36cc9c1ea1369971387d7bb23533b2797350\"\u003e\u003ccode\u003e624a36c\u003c/code\u003e\u003c/a\u003e Release version 14.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/c8242bbb3ab7e8054a2cbae2bb88cb649bf730f4\"\u003e\u003ccode\u003ec8242bb\u003c/code\u003e\u003c/a\u003e Add changelog for \u003ca href=\"https://redirect.github.com/python-websockets/websockets/issues/1566\"\u003e#1566\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/17e309a830cabfe5e335bf96cb3795c45f053fbc\"\u003e\u003ccode\u003e17e309a\u003c/code\u003e\u003c/a\u003e Mention another symptom in the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7de24bd087e6e51901b6fd5d28bdb6a32404de69\"\u003e\u003ccode\u003e7de24bd\u003c/code\u003e\u003c/a\u003e Improve previous commit.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7e617b2a57177885926b3a4a8a092621ab719a00\"\u003e\u003ccode\u003e7e617b2\u003c/code\u003e\u003c/a\u003e Add regex support in \u003ccode\u003eServerProtocol(origins=...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/613f3f0ef83a0c80ae49a42766fb634295216c5c\"\u003e\u003ccode\u003e613f3f0\u003c/code\u003e\u003c/a\u003e Prevent close() from blocking when reading is paused.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/e7a098e1a0d5dffcac5f0600703c4ec2de0be48a\"\u003e\u003ccode\u003ee7a098e\u003c/code\u003e\u003c/a\u003e Prevent AssertionError in the recv_events thread.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/031ec31b70adc527836c5565a7809724fb888c9c\"\u003e\u003ccode\u003e031ec31\u003c/code\u003e\u003c/a\u003e Prevent close() from blocking when reading is paused.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/6317c00cc5af245116781ddfde518ec004de672e\"\u003e\u003ccode\u003e6317c00\u003c/code\u003e\u003c/a\u003e Clarify behavior of \u003ccode\u003erecv(timeout=0)\u003c/code\u003e behavior.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/b1e88fcb77f6b74b2eab6a11a4ee53e4f04937ac\"\u003e\u003ccode\u003eb1e88fc\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 2.21.3 to 2.22.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-websockets/websockets/compare/14.1...14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.10.4 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.10.4...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.7.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.7.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 `email-validator` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JoshData/python-email-validator/releases\"\u003eemail-validator's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/blob/main/CHANGELOG.md\"\u003eemail-validator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.0 (August 26, 2025)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/030a63a183a6a66450e98381ca9a23ab9769706a\"\u003e\u003ccode\u003e030a63a\u003c/code\u003e\u003c/a\u003e Version 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/e943a0f07f5c130b4a419e0cd79f705f36bf24fe\"\u003e\u003ccode\u003ee943a0f\u003c/code\u003e\u003c/a\u003e Raise TypeError when an invalid argument is passed for email, closes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/155\"\u003e#155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/f90d256045dc1ccbcffd5514189267d14a9e3ea1\"\u003e\u003ccode\u003ef90d256\u003c/code\u003e\u003c/a\u003e Remove local part length check unless new strict flag is given, fixes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/158\"\u003e#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/98800bac023b8713351393a5043034065f1ea6cb\"\u003e\u003ccode\u003e98800ba\u003c/code\u003e\u003c/a\u003e Add explicit checks for internationalized domain name characters invalid unde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/936aead3bf5c608f8561954e0d2955b7f97bfdad\"\u003e\u003ccode\u003e936aead\u003c/code\u003e\u003c/a\u003e Fix final syntax checks on normalized internationalized domains checking the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/8043de49596f08d54a07e2bc7c442ced074216a6\"\u003e\u003ccode\u003e8043de4\u003c/code\u003e\u003c/a\u003e NFC-normalize display names per UTS \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/39\"\u003e#39\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/bc08faa2a74b51a9e7ba7ff4f995c0b475cb5b12\"\u003e\u003ccode\u003ebc08faa\u003c/code\u003e\u003c/a\u003e Add one-off error messages for full-width-at and small-commercial-at which ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/a1c90ab58fb0f5d969a8351a68ca15bff068527c\"\u003e\u003ccode\u003ea1c90ab\u003c/code\u003e\u003c/a\u003e Split exceptions_types.py into exceptions.py and types.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/dbcf07cc5c8066c14b6dc58d2dbb4a1e582eeefd\"\u003e\u003ccode\u003edbcf07c\u003c/code\u003e\u003c/a\u003e Change package name from using underscore to dash to match PyPi normalized pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/7c22208ee5b82c377e960ddcea5293691eadc6cc\"\u003e\u003ccode\u003e7c22208\u003c/code\u003e\u003c/a\u003e Support ALLOW_DISPLAY_NAME and ALLOW_EMPTY_LOCAL in the CLI (\u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JoshData/python-email-validator/compare/v2.2.0...v2.3.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.36 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 `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 `alembic` from 1.14.0 to 1.18.4\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.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.18.3\u003c/h1\u003e\n\u003cp\u003eReleased: January 29, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed regression in version 1.18.0 due to \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e where autogenerate\nwould raise \u003ccode\u003eNoReferencedTableError\u003c/code\u003e when a foreign key constraint\nreferenced a table that was not part of the initial table load, including\ntables filtered out by the\n\u003ccode\u003eEnvironmentContext.configure.include_name\u003c/code\u003e callable or tables\nin remote schemas that were not included in the initial reflection run.\u003c/p\u003e\n\u003cp\u003eThe change in \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e was a performance optimization that eliminated\nadditional reflection queries for tables that were only referenced by\nforeign keys but not explicitly included in the main reflection run.\nHowever, this optimization inadvertently removed the creation of\n\u003ccode\u003eTable\u003c/code\u003e objects for these referenced tables, causing autogenerate\nto fail when processing foreign key constraints that pointed to them.\u003c/p\u003e\n\u003cp\u003eThe fix creates placeholder \u003ccode\u003eTable\u003c/code\u003e objects for foreign key targets\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 `psycopg` from 3.2.3 to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eFuture releases\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5 (unreleased)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003ePsycopg 3.3.1\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.2.3...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `minio` from 7.2.12 to 7.2.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/minio/minio-py/releases\"\u003eminio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBugfix Release 7.2.20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnable github CI run by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1543\"\u003eminio/minio-py#1543\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1521\"\u003e#1521\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1539\"\u003eminio/minio-py#1539\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields (… by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1540\"\u003eminio/minio-py#1540\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider (\u003ca href=\"https://redirect.github.com/minio/minio-py/issues/1528\"\u003e#1528\u003c/a\u003e) by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1541\"\u003eminio/minio-py#1541\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix object_size/headers in ComposeSource by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1545\"\u003eminio/minio-py#1545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix complete_multipart_upload() to support SSE-C by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1544\"\u003eminio/minio-py#1544\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/minio/minio-py/compare/7.2.18...7.2.20\"\u003ehttps://github.com/minio/minio-py/compare/7.2.18...7.2.20\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eBugfix release 7.2.19\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd region, extra_headers and extra_query_params by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1505\"\u003eminio/minio-py#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BaseException internals to be set by \u003ca href=\"https://github.com/balamurugana\"\u003e\u003ccode\u003e@​balamurugana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1521\"\u003eminio/minio-py#1521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Add missing type annotations to serialization dataclass fields by \u003ca href=\"https://github.com/rraulinio\"\u003e\u003ccode\u003e@​rraulinio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1527\"\u003eminio/minio-py#1527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport optional parameters in LdapIdentityProvider by \u003ca href=\"https://github.com/jkandasa\"\u003e\u003ccode\u003e@​jkandasa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/minio/minio-py/pull/1528\"\u003eminio/minio-py#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncorrect existing checksum headers to both CreateMultipartUpload and UploadPart requests by \u003ca hre...\n\n_Description has been truncated_","html_url":"https://github.com/ShAuRyA-Noodle/Bad-Omens/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShAuRyA-Noodle%2FBad-Omens/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"\u003e=4.10.0","new_version":"\u003e=4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-05-02T00:10:26.000Z","version_change":"\u003e=4.10.0 → \u003e=4.14.2","issue":{"uuid":"4367197292","node_id":"PR_kwDOLRXzGM7XjuZI","number":49,"state":"open","title":"build(deps-dev): update testcontainers requirement from \u003e=4.10.0 to \u003e=4.14.2","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-05-02T00:10:26.000Z","updated_at":"2026-05-02T00:34:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.10.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.10.0...testcontainers-v4.14.2\"\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/hasansezertasan/opinionated-mixins/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasansezertasan%2Fopinionated-mixins/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"}},{"old_version":"4.8.2","new_version":"4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-05-01T08:56:50.000Z","version_change":"4.8.2 → 4.14.2","issue":{"uuid":"4363640401","node_id":"PR_kwDOSMI7H87XYXqd","number":42,"state":"open","title":"chore(deps): bump the dev-deps group with 16 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-05-01T08:56:50.000Z","updated_at":"2026-05-01T08:56:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dev-deps","update_count":16,"packages":[{"name":"pytest","old_version":"8.3.3","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"0.24.0","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"5.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"httpx","old_version":"0.27.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"mcp","old_version":"1.9.4","new_version":"1.27.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"structlog","old_version":"24.4.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"name":"testcontainers","old_version":"4.8.2","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"ruff","old_version":"0.7.4","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.13.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.7.10","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.7.3","new_version":"2.10.0","repository_url":"https://github.com/pypa/pip-audit"},{"name":"pre-commit","old_version":"4.0.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"fastapi","old_version":"0.111.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.30.1","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-deps group with 16 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.3` | `9.0.3` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.24.0` | `1.3.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `5.0.0` | `7.1.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.0` | `0.28.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.9.4` | `1.27.0` |\n| [structlog](https://github.com/hynek/structlog) | `24.4.0` | `25.5.0` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.8.2` | `4.14.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.7.4` | `0.15.12` |\n| [mypy](https://github.com/python/mypy) | `1.13.0` | `1.20.2` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.10` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.7.3` | `2.10.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.6.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.0` | `0.136.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.1` | `0.46.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.12` |\n\nUpdates `pytest` from 8.3.3 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\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/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\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/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.3.3...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 0.24.0 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/pytest-dev/pytest-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio 1.3.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.3.0\"\u003e1.3.0\u003c/a\u003e - 2025-11-10\u003c/h1\u003e\n\u003ch2\u003eRemoved\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pytest 9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1279\"\u003e#1279\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTested Python versions include free threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTests are run in the same pytest process, instead of spawning a subprocess with \u003ccode\u003epytest.Pytester.runpytest_subprocess\u003c/code\u003e. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.2.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.2.0\"\u003e1.2.0\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e--asyncio-debug\u003c/code\u003e CLI option and \u003ccode\u003easyncio_debug\u003c/code\u003e configuration option to enable asyncio debug mode for the default event loop. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003epytest.UsageError\u003c/code\u003e for invalid configuration values of \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e and \u003ccode\u003easyncio_default_test_loop_scope\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1189\"\u003e#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility with the Pyright type checker (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRuntimeError: There is no current event loop in thread 'MainThread'\u003c/code\u003e when any test unsets the event loop (such as when using \u003ccode\u003easyncio.run\u003c/code\u003e and \u003ccode\u003easyncio.Runner\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1177\"\u003e#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecation warning when decorating an asynchronous fixture with \u003ccode\u003e@pytest.fixture\u003c/code\u003e in [strict]{.title-ref} mode. The warning message now refers to the correct package. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the minimum required version of tox to v4.28. This change is only relevant if you use the \u003ccode\u003etox.ini\u003c/code\u003e file provided by pytest-asyncio to run tests.\u003c/li\u003e\n\u003cli\u003eExtend dependency on typing-extensions\u0026gt;=4.12 from Python\u0026lt;3.10 to Python\u0026lt;3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.1.1\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/v1.1.1\"\u003ev1.1.1\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cp\u003e- Addresses a build problem with setuptoos-scm \u0026gt;= 9 caused by invalid setuptools-scm configuration in pytest-asyncio. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1192\"\u003e#1192\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003epytest-asyncio 1.1.0\u003c/h2\u003e\n\u003ch1\u003eAdded\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePropagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancellation of tasks when the \u003ccode\u003eloop_scope\u003c/code\u003e ends (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/200\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarning when the current event loop is closed by a test\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixed\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/pytest-dev/pytest-asyncio/commit/2e9695fcf8c5c514f30f57b7d14ab83846357b96\"\u003e\u003ccode\u003e2e9695f\u003c/code\u003e\u003c/a\u003e docs: Compile changelog for v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/dd0e9ba3fa672fd6bf375004319742f8d3a50e12\"\u003e\u003ccode\u003edd0e9ba\u003c/code\u003e\u003c/a\u003e docs: Reference correct issue in news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4c31abe5bf46bca3c9bdc7b18405f3deba4145d0\"\u003e\u003ccode\u003e4c31abe\u003c/code\u003e\u003c/a\u003e Build(deps): Bump nh3 from 0.3.1 to 0.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/13e94770d7bb146c329ae0e02486c0a6b38f3772\"\u003e\u003ccode\u003e13e9477\u003c/code\u003e\u003c/a\u003e Link to migration guides from changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4d2cf3c36f47d7c4d563d401cdf229b35da34fbe\"\u003e\u003ccode\u003e4d2cf3c\u003c/code\u003e\u003c/a\u003e tests: handle Python 3.14 DefaultEventLoopPolicy deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ee3549b6efb729b934e370e2be8040b25b034010\"\u003e\u003ccode\u003eee3549b\u003c/code\u003e\u003c/a\u003e test: Remove obsolete test for the event_loop fixture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/7a67c82c5ae548f0968438e9dfa0f282d51c4597\"\u003e\u003ccode\u003e7a67c82\u003c/code\u003e\u003c/a\u003e tests: Fix failing test by preventing warning conversion to error.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a17b689a750d05b6fc9369f5fb2b06baaba83536\"\u003e\u003ccode\u003ea17b689\u003c/code\u003e\u003c/a\u003e test: add pytest config to isolated test directories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/18afc9df5a3153dc1fbdc4e11a56517ef95480df\"\u003e\u003ccode\u003e18afc9d\u003c/code\u003e\u003c/a\u003e fix(tests): replace runpytest_subprocess with runpytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/cdc6bd1de75b4738289eafd546f5e27a0bfd3b41\"\u003e\u003ccode\u003ecdc6bd1\u003c/code\u003e\u003c/a\u003e Add support for pytest 9 and drop Python 3.9 support\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v0.24.0...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 5.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.0.0 (2025-09-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for subprocesses measurement.\u003c/p\u003e\n\u003cp\u003eIt was a feature added long time ago when coverage lacked a nice way to measure subprocesses created in tests.\nIt relied on a \u003ccode\u003e.pth\u003c/code\u003e file, there was no way to opt-out and it created bad interations\nwith \u003ccode\u003ecoverage's new patch system \u0026lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch\u0026gt;\u003c/code\u003e_ added\nin \u003ccode\u003e7.10 \u0026lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003eTo migrate to this release you might need to enable the suprocess patch, example for \u003ccode\u003e.coveragerc\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003e.. code-block:: ini\u003c/p\u003e\n\u003cp\u003e[run]\npatch = subprocess\u003c/p\u003e\n\u003cp\u003eThis release also requires at least coverage 7.10.6.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSwitched packaging to have metadata completely in \u003ccode\u003epyproject.toml\u003c/code\u003e and use \u003ccode\u003ehatchling \u0026lt;https://pypi.org/project/hatchling/\u0026gt;\u003c/code\u003e_ for\nbuilding.\nContributed by Ofek Lev in \u003ccode\u003e[#551](https://github.com/pytest-dev/pytest-cov/issues/551) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/551\u0026gt;\u003c/code\u003e_\nwith some extras in \u003ccode\u003e[#716](https://github.com/pytest-dev/pytest-cov/issues/716) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/716\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved some not really necessary testing deps like \u003ccode\u003esix\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v5.0.0...v7.1.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.0 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\u003ch2\u003eVersion 0.27.2\u003c/h2\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.1\u003c/h2\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\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\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\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.0...0.28.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.29.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003eSupport Python 3.13 and PostgreSQL 17.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImplement GSSAPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1d4e5680 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1122\"\u003e#1122\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement SSPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1aab2094 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1128\"\u003e#1128\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd initial typings\n(by \u003ca href=\"https://github.com/bryanforbes\"\u003e\u003ccode\u003e@​bryanforbes\u003c/code\u003e\u003c/a\u003e in d42432bf for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1127\"\u003e#1127\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow building with Cython 3\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 1.9.4 to 1.27.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.27.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused \u003ccode\u003erequests\u003c/code\u003e dependency from simple-chatbot example by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1959\"\u003emodelcontextprotocol/python-sdk#1959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: backport conformance tests from main to v1.x by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2068\"\u003emodelcontextprotocol/python-sdk#2068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add RFC 8707 resource validation to OAuth client by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2069\"\u003emodelcontextprotocol/python-sdk#2069\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add idle timeout for StreamableHTTP sessions by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1994\"\u003emodelcontextprotocol/python-sdk#1994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: prevent command injection in example URL opening by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2085\"\u003emodelcontextprotocol/python-sdk#2085\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd VERSIONING.md, ROADMAP.md, and DEPENDENCY_POLICY.md by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2084\"\u003emodelcontextprotocol/python-sdk#2084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: restructure README into docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2091\"\u003emodelcontextprotocol/python-sdk#2091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: comprehensive feature documentation for SEP-1730 Tier 1 by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2090\"\u003emodelcontextprotocol/python-sdk#2090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stub pages and improve docs structure by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2101\"\u003emodelcontextprotocol/python-sdk#2101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix GitHub links to point to v1.x branch by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2102\"\u003emodelcontextprotocol/python-sdk#2102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add snippet verification for docs/ pages by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2115\"\u003emodelcontextprotocol/python-sdk#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add server-side tool error handling documentation by \u003ca href=\"https://github.com/felixweinberger\"\u003e\u003ccode\u003e@​felixweinberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2129\"\u003emodelcontextprotocol/python-sdk#2129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport: Add missing TasksCallCapability to v1.x by \u003ca href=\"https://github.com/BabyChrist666\"\u003e\u003ccode\u003e@​BabyChrist666\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2137\"\u003emodelcontextprotocol/python-sdk#2137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle non-UTF-8 bytes in stdio server stdin by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2303\"\u003emodelcontextprotocol/python-sdk#2303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: handle ClosedResourceError when transport closes mid-request by \u003ca href=\"https://github.com/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\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/owendevereaux\"\u003e\u003ccode\u003e@​owendevereaux\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/2334\"\u003emodelcontextprotocol/python-sdk#2334\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.26.0...v1.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.26.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: add all-green job to pull-request-checks workflow by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1929\"\u003emodelcontextprotocol/python-sdk#1929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport: Support for Resource and ResourceTemplate metadata by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1928\"\u003emodelcontextprotocol/python-sdk#1928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[v1.x] fix: return HTTP 404 for unknown session IDs instead of 400 by \u003ca href=\"https://github.com/LucaButBoring\"\u003e\u003ccode\u003e@​LucaButBoring\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1945\"\u003emodelcontextprotocol/python-sdk#1945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.25.0...v1.26.0\"\u003ehttps://github.com/modelcontextprotocol/python-sdk/compare/v1.25.0...v1.26.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.25.0\u003c/h2\u003e\n\u003ch2\u003eBranching Update\u003c/h2\u003e\n\u003cp\u003eStarting with this release, the repository has adopted a new branching strategy for v2 development:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003emain\u003c/code\u003e\u003c/strong\u003e — v2 development (breaking changes)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ev1.x\u003c/code\u003e\u003c/strong\u003e — v1 maintenance (security and critical bug fixes only, with very rare feature additions ported from \u003ccode\u003emain\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUsers who need to stay on v1.x should pin to \u003ccode\u003emcp\u0026gt;=1.25,\u0026lt;2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe current plan is to work through v2 and have it released some time in Q1. This also relies on the next upcoming spec release which will heavily change how the transport layer works, which in turn will guide a lot of how we architect v2.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix for Url Elicitation issue 1768 by \u003ca href=\"https://github.com/gopitk\"\u003e\u003ccode\u003e@​gopitk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1780\"\u003emodelcontextprotocol/python-sdk#1780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add v1.x branch to main-checks workflow by \u003ca href=\"https://github.com/maxisbey\"\u003e\u003ccode\u003e@​maxisbey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/pull/1802\"\u003emodelcontextprotocol/python-sdk#1802\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/modelcontextprotocol/python-sdk/commit/652478266702ac71a1d03692337bd5207ddbedf4\"\u003e\u003ccode\u003e6524782\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle ClosedResourceError when transport closes mid-request (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2334\"\u003e#2334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2e9897e2b916bef25e7755146aeb9f9b69c1075d\"\u003e\u003ccode\u003e2e9897e\u003c/code\u003e\u003c/a\u003e [v1.x] fix: handle non-UTF-8 bytes in stdio server stdin (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2303\"\u003e#2303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/f8d98b63a7e9ab5855d79556d3d7e5638472af6c\"\u003e\u003ccode\u003ef8d98b6\u003c/code\u003e\u003c/a\u003e Backport: Add missing TasksCallCapability to v1.x (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2137\"\u003e#2137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c68e254bad1dd39e6a10dad43d954c6d17f9f514\"\u003e\u003ccode\u003ec68e254\u003c/code\u003e\u003c/a\u003e docs: add server-side tool error handling documentation (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2129\"\u003e#2129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/1ef124e4a85c1c0947fdc6ba1dd1af384d866064\"\u003e\u003ccode\u003e1ef124e\u003c/code\u003e\u003c/a\u003e docs: add snippet verification for docs/ pages (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2115\"\u003e#2115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/cfbbd7d71aeb094b122c8780a5cb3816e09f29af\"\u003e\u003ccode\u003ecfbbd7d\u003c/code\u003e\u003c/a\u003e docs: fix GitHub links to point to v1.x branch (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2102\"\u003e#2102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/1f9fb348f3311bb7cc139bc2c457220368cfea9e\"\u003e\u003ccode\u003e1f9fb34\u003c/code\u003e\u003c/a\u003e docs: fix stub pages and improve docs structure (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2101\"\u003e#2101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c86477c7b752c57e503c00b93cd7f161a2562d49\"\u003e\u003ccode\u003ec86477c\u003c/code\u003e\u003c/a\u003e docs: comprehensive feature documentation for SEP-1730 Tier 1 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2090\"\u003e#2090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/a77462b64da89439aa49cb115fff830f3b09d01e\"\u003e\u003ccode\u003ea77462b\u003c/code\u003e\u003c/a\u003e docs: restructure README into docs/ pages (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2091\"\u003e#2091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/b1adfcd88542fb2930f42cccab2f3629f605c498\"\u003e\u003ccode\u003eb1adfcd\u003c/code\u003e\u003c/a\u003e Add VERSIONING.md, ROADMAP.md, and DEPENDENCY_POLICY.md (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/2084\"\u003e#2084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v1.9.4...v1.27.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `structlog` from 24.4.0 to 25.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/releases\"\u003estructlog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.5.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eHuge release! There's plenty of important little bug fixes and new features, but the headliner is definitely the improved ergonomics of \u003ccode\u003estructlog.dev.ConsoleRenderer\u003c/code\u003e. We have finally accepted that local development has different priorities than production and made it both mutable (with automatic re-configuration) and also easily retrievable (\u003ccode\u003ecr = ConsoleRenderer.get_active()\u003c/code\u003e). This allows you, for example, to disable Rich exception formatting as easily as \u003ccode\u003estructlog.dev.ConsoleRenderer.get_active().exception_formatter = structlog.dev.plain_traceback\u003c/code\u003e. Please check out the \u003ca href=\"https://www.structlog.org/en/stable/console-output.html\"\u003eupdated docs\u003c/a\u003e!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.thanks.dev\"\u003ethanks.dev\u003c/a\u003e (@\u003ca href=\"https://github.com/thnxdev\"\u003ethnxdev\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"https://quesma.com/\"\u003eQuesma\u003c/a\u003e (\u003ca href=\"https://github.com/QuesmaOrg\"\u003e\u003ccode\u003e@​QuesmaOrg\u003c/code\u003e\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://www.lambdatest.com\"\u003eLambdaTest\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), Jeff McCarrell (@\u003ca href=\"https://github.com/jmccarrell\"\u003ejmccarrell\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e), and Jeff McCarrell (@\u003ca href=\"https://github.com/jmccarrell\"\u003ejmccarrell\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e's \u003cem\u003epad_event\u003c/em\u003e argument has been renamed to \u003cem\u003epad_event_to\u003c/em\u003e to differentiate it from the boolean \u003cem\u003epad_level\u003c/em\u003e argument. \u003cem\u003epad_event\u003c/em\u003e is now deprecated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_active()\u003c/code\u003e that returns the currently active \u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e now supports setting the \u003ccode\u003eexception_formatter\u003c/code\u003e attribute.\u003c/p\u003e\n\u003cp\u003eYou can now disable the pretty-printing of exceptions by setting it to \u003ccode\u003estructlog.dev.plain_traceback\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003ecr = structlog.dev.ConsoleRenderer.get_active()\r\ncr.exception_formatter = structlog.dev.plain_traceback\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSame goes for \u003cem\u003esort_keys\u003c/em\u003e, \u003cem\u003ecolumns\u003c/em\u003e, \u003cem\u003ecolors\u003c/em\u003e, \u003cem\u003eforce_colors\u003c/em\u003e, \u003cem\u003elevel_styles\u003c/em\u003e, \u003cem\u003epad_event_to\u003c/em\u003e, \u003cem\u003eevent_key\u003c/em\u003e, \u003cem\u003etimestamp_key\u003c/em\u003e, and \u003cem\u003erepr_native_str\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/756\"\u003e#756\u003c/a\u003e \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/757\"\u003e#757\u003c/a\u003e \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/759\"\u003e#759\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_default_column_styles()\u003c/code\u003e for reuse the default column styles. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/741\"\u003e#741\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.testing.capture_logs()\u003c/code\u003e now optionally accepts \u003cem\u003eprocessors\u003c/em\u003e to apply before capture. \u003ca href=\"https://redirect.github.com/hynek/structlog/pull/728\"\u003e#728\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/structlog/blob/main/CHANGELOG.md\"\u003estructlog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/structlog/compare/25.4.0...25.5.0\"\u003e25.5.0\u003c/a\u003e - 2025-10-27\u003c/h2\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e's \u003cem\u003epad_event\u003c/em\u003e argument has been renamed to \u003cem\u003epad_event_to\u003c/em\u003e to differentiate it from the boolean \u003cem\u003epad_level\u003c/em\u003e argument.\n\u003cem\u003epad_event\u003c/em\u003e is now deprecated.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_active()\u003c/code\u003e that returns the currently active \u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.dev.ConsoleRenderer()\u003c/code\u003e now supports setting the \u003ccode\u003eexception_formatter\u003c/code\u003e attribute.\u003c/p\u003e\n\u003cp\u003eYou can now disable the pretty-printing of exceptions by setting it to \u003ccode\u003estructlog.dev.plain_traceback\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003ecr = structlog.dev.ConsoleRenderer.get_active()\ncr.exception_formatter = structlog.dev.plain_traceback\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSame goes for \u003cem\u003esort_keys\u003c/em\u003e, \u003cem\u003ecolumns\u003c/em\u003e, \u003cem\u003ecolors\u003c/em\u003e, \u003cem\u003eforce_colors\u003c/em\u003e, \u003cem\u003elevel_styles\u003c/em\u003e, \u003cem\u003epad_event_to\u003c/em\u003e, \u003cem\u003eevent_key\u003c/em\u003e, \u003cem\u003etimestamp_key\u003c/em\u003e, and \u003cem\u003erepr_native_str\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/749\"\u003e#749\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/756\"\u003e#756\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/757\"\u003e#757\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/759\"\u003e#759\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003estructlog.dev.ConsoleRenderer.get_default_column_styles()\u003c/code\u003e for reuse the default column styles.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/741\"\u003e#741\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.testing.capture_logs()\u003c/code\u003e now optionally accepts \u003cem\u003eprocessors\u003c/em\u003e to apply before capture.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/728\"\u003e#728\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.dev.RichTracebackFormatter\u003c/code\u003e now exposes the upstream \u003cem\u003ecode_width\u003c/em\u003e parameter.\nDefault \u003cem\u003ewidth\u003c/em\u003e is now \u003ccode\u003eNone\u003c/code\u003e for full terminal width.\nFull terminal width is now handled by Rich itself, bringing support for reflow and \u003ccode\u003eCOLUMN\u003c/code\u003e environment variable.\nPassing \u003ccode\u003e-1\u003c/code\u003e for \u003cem\u003ewidth\u003c/em\u003e is now deprecated and automatically replaced by \u003ccode\u003eNone\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/717\"\u003e#717\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNative loggers now allow the passing of a dictionary for dictionary-based interpolation \u003ccode\u003elog.info(\u0026quot;hello %(name)s!\u0026quot;, {\u0026quot;name\u0026quot;: \u0026quot;world\u0026quot;})\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/748\"\u003e#748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOn Python 3.11+, \u003ccode\u003estructlog.processors.CallsiteParameterAdder\u003c/code\u003e now supports \u003ccode\u003eCallsiteParameter.QUAL_NAME\u003c/code\u003e that adds the qualified name of the callsite, including scope and class names.\nThis is only available for \u003cem\u003estructlog\u003c/em\u003e-originated events since the standard library has no equivalent.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003estructlog.stdlib.LoggerFactory\u003c/code\u003e now supports the \u003cem\u003estacklevel\u003c/em\u003e parameter.\n\u003ca href=\"https://redirect.github.com/hynek/structlog/pull/763\"\u003e#763\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/hynek/structlog/commit/c0ef9e09e7a536cae65e33c1ac1c8b4e6a6f7511\"\u003e\u003ccode\u003ec0ef9e0\u003c/code\u003e\u003c/a\u003e Prepare 25.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/9cb662fe32046f92f08346c58089a2dcba7cb4bf\"\u003e\u003ccode\u003e9cb662f\u003c/code\u003e\u003c/a\u003e docs: nit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/5400612735ad07bbe8ee9f2279f3040aa2e69ca4\"\u003e\u003ccode\u003e5400612\u003c/code\u003e\u003c/a\u003e docs/stdlib: add warning about ProcessorFormatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/1c2c19aa19c8f30330b76465b7a0d9993b9e8360\"\u003e\u003ccode\u003e1c2c19a\u003c/code\u003e\u003c/a\u003e Try validating pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/aca10f23dd12bd9e14cfe712f1ce66c9cb5f4400\"\u003e\u003ccode\u003eaca10f2\u003c/code\u003e\u003c/a\u003e Drop pretend dependency (\u003ca href=\"https://redirect.github.com/hynek/structlog/issues/766\"\u003e#766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/3800d401db2c682c7c83b2d3eec38d81c9791f4d\"\u003e\u003ccode\u003e3800d40\u003c/code\u003e\u003c/a\u003e docs: use native\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/ecaa15ac6b166ebca9f2b4f5cfdb4c4ec138a602\"\u003e\u003ccode\u003eecaa15a\u003c/code\u003e\u003c/a\u003e stdlib: add support for stacklevel (\u003ca href=\"https://redirect.github.com/hynek/structlog/issues/763\"\u003e#763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/7f7a221aed6bbff3c13cefd7effe14cc4f0cfc24\"\u003e\u003ccode\u003e7f7a221\u003c/code\u003e\u003c/a\u003e update dev (\u003ca href=\"https://redirect.github.com/hynek/structlog/issues/765\"\u003e#765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/5acfc85e3c3fa821dc65b55a226900d40dc0831c\"\u003e\u003ccode\u003e5acfc85\u003c/code\u003e\u003c/a\u003e docs: 5% bigger still\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/structlog/commit/c102862e3f30de84c898c4501418dede15056c6d\"\u003e\u003ccode\u003ec102862\u003c/code\u003e\u003c/a\u003e docs: bigger font\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hynek/structlog/compare/24.4.0...25.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.8.2 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003epython 3.14 is now supported!\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.2\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github...\n\n_Description has been truncated_","html_url":"https://github.com/Orm15/mcp-fintech-demo/pull/42","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orm15%2Fmcp-fintech-demo/issues/42","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42/packages"}},{"old_version":"4.9.2","new_version":"4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-04-27T22:31:53.000Z","version_change":"4.9.2 → 4.14.2","issue":{"uuid":"4339256101","node_id":"PR_kwDOHTdvBs7WIng2","number":1590,"state":"closed","title":"deps(ibis): bump the all group across 1 directory with 33 updates","user":"dependabot[bot]","labels":["ibis","dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-04T23:10:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T22:31:53.000Z","updated_at":"2026-05-04T23:10:38.000Z","time_to_close":607123,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(ibis): bump","group_name":"all","update_count":33,"packages":[{"name":"fastapi","old_version":"0.120.1","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.10.6","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"ibis-framework","old_version":"10.8.0","new_version":"12.0.0","repository_url":"https://github.com/ibis-project/ibis"},{"name":"google-auth","old_version":"2.38.0","new_version":"2.49.2","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"orjson","old_version":"3.11.7","new_version":"3.11.8","repository_url":"https://github.com/ijl/orjson"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"geoalchemy2","old_version":"0.17.1","new_version":"0.19.0","repository_url":"https://github.com/geoalchemy/geoalchemy2"},{"name":"gql","old_version":"3.5.2","new_version":"4.0.0","repository_url":"https://github.com/graphql-python/gql"},{"name":"anyio","old_version":"4.10.0","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"duckdb","old_version":"1.3.2","new_version":"1.5.2","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"oracledb","old_version":"3.3.0","new_version":"3.4.2","repository_url":"https://github.com/oracle/python-oracledb"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"gunicorn","old_version":"23.0.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"uvicorn-worker","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/Kludex/uvicorn-worker"},{"name":"redshift-connector","old_version":"2.1.7","new_version":"2.1.13","repository_url":"https://github.com/aws/amazon-redshift-python-driver"},{"name":"datafusion","old_version":"47.0.0","new_version":"53.0.0","repository_url":"https://github.com/apache/datafusion-python"},{"name":"starlette","old_version":"0.49.3","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"databricks-sql-connector","old_version":"4.2.5","new_version":"4.2.6","repository_url":"https://github.com/databricks/databricks-sql-python"},{"name":"databricks-sdk","old_version":"0.73.0","new_version":"0.105.0","repository_url":"https://github.com/databricks/databricks-sdk-py"},{"name":"pyspark","old_version":"3.5.7","new_version":"4.1.1","repository_url":"https://github.com/apache/spark"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"wren-engine","old_version":"0.1.0","new_version":"0.3.0","repository_url":"https://github.com/Canner/wren-engine"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"plotly","old_version":"6.6.0","new_version":"6.7.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"testcontainers","old_version":"4.9.2","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"sqlalchemy","old_version":"2.0.39","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.11.2","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"psycopg2","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"clickhouse-connect","old_version":"0.8.15","new_version":"0.15.1","repository_url":"https://github.com/ClickHouse/clickhouse-connect"},{"name":"polars","old_version":"1.39.3","new_version":"1.40.1","repository_url":"https://github.com/pola-rs/polars"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all group with 33 updates in the /ibis-server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.120.1` | `0.136.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.10.6` | `2.13.3` |\n| [ibis-framework](https://github.com/ibis-project/ibis) | `10.8.0` | `12.0.0` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.38.0` | `2.49.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.11.8` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [geoalchemy2](https://github.com/geoalchemy/geoalchemy2) | `0.17.1` | `0.19.0` |\n| [gql](https://github.com/graphql-python/gql) | `3.5.2` | `4.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.10.0` | `4.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.3.2` | `1.5.2` |\n| [oracledb](https://github.com/oracle/python-oracledb) | `3.3.0` | `3.4.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.46.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `23.0.0` | `25.3.0` |\n| [uvicorn-worker](https://github.com/Kludex/uvicorn-worker) | `0.3.0` | `0.4.0` |\n| [redshift-connector](https://github.com/aws/amazon-redshift-python-driver) | `2.1.7` | `2.1.13` |\n| [datafusion](https://github.com/apache/datafusion-python) | `47.0.0` | `53.0.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.49.3` | `1.0.0` |\n| [databricks-sql-connector](https://github.com/databricks/databricks-sql-python) | `4.2.5` | `4.2.6` |\n| [databricks-sdk](https://github.com/databricks/databricks-sdk-py) | `0.73.0` | `0.105.0` |\n| [pyspark](https://github.com/apache/spark) | `3.5.7` | `4.1.1` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.1.0` |\n| [wren-engine](https://github.com/Canner/wren-engine) | `0.1.0` | `0.3.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.6.0` | `6.7.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.3` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.9.2` | `4.14.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.39` | `2.0.49` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.2` | `0.15.12` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect) | `0.8.15` | `0.15.1` |\n| [polars](https://github.com/pola-rs/polars) | `1.39.3` | `1.40.1` |\n\n\nUpdates `fastapi` from 0.120.1 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.120.1...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.10.6 to 2.13.3\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.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\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd zizmor for GitHub Actions workflow linting 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/13039\"\u003e#13039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jiter to v0.14.0 to fix a segmentation fault on musl Linux 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/13064\"\u003e#13064\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/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.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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow default factories of private attributes to take validated model data 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/13013\"\u003e#13013\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9e9a11132c980c4ec84ff6d2df06d4c1a55ca8f3\"\u003e\u003ccode\u003e9e9a111\u003c/code\u003e\u003c/a\u003e Fix backported test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1ec8c6aa0cae1c78409c6f31af738a24e16c7124\"\u003e\u003ccode\u003e1ec8c6a\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fb4f2044436e9fa4ff9745479ce263016a99c4d6\"\u003e\u003ccode\u003efb4f204\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ca3ddd1149bd3b14273922a29da174804496a055\"\u003e\u003ccode\u003eca3ddd1\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/000e823a3ab7545b0c6064fde34effdcd02044ab\"\u003e\u003ccode\u003e000e823\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d45d8be3ffb6dfc6d0c64da6980140c91ff841fb\"\u003e\u003ccode\u003ed45d8be\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/54aca609ce58e73dfe1c681d93432fbe3a4621da\"\u003e\u003ccode\u003e54aca60\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/46bf4fa648af3a1fbf4603a37f210e9d9c618357\"\u003e\u003ccode\u003e46bf4fa\u003c/code\u003e\u003c/a\u003e Fix Pydantic release workflow (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13067\"\u003e#13067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1b359edab09c623464d23c6fd2503ae5ff276d43\"\u003e\u003ccode\u003e1b359ed\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13065\"\u003e#13065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b1bf19445d8ac144a7a0e82674d2d87eebab6c18\"\u003e\u003ccode\u003eb1bf194\u003c/code\u003e\u003c/a\u003e Fix model equality when using runtime \u003ccode\u003eextra\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13062\"\u003e#13062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.10.6...v2.13.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ibis-framework` from 10.8.0 to 12.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ibis-project/ibis/releases\"\u003eibis-framework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/ibis-project/ibis/compare/11.0.0...12.0.0\"\u003e12.0.0\u003c/a\u003e (2026-02-07)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e PySpark \u0026lt;3.5 is no longer supported\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e implement \u003ccode\u003eupsert()\u003c/code\u003e using \u003ccode\u003eMERGE INTO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11624\"\u003e#11624\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9126733b38e1c92f6e787f92dc9954e88ab6400d\"\u003e9126733\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/5391\"\u003e#5391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support Table.cast(my_col=int) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9e209f37b6228472071ef8b9168ed56ec9c0a727\"\u003e9e209f3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatabricks:\u003c/strong\u003e support json literals (\u003ca href=\"https://github.com/ibis-project/ibis/commit/f46a58f9eb5128e64981b756b0a866e291663997\"\u003ef46a58f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatafusion:\u003c/strong\u003e add compilation rule for Strftime (\u003ca href=\"https://github.com/ibis-project/ibis/commit/6fa8411e43a68f0f0ac38f493242bc1ff28a5253\"\u003e6fa8411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e enable compatibility with pandas 3.0.0 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11873\"\u003e#11873\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34a36be80e589e449501942bda8ec4125e89beb0\"\u003e34a36be\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ematerialize:\u003c/strong\u003e add new backend for Materialize streaming database (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11893\"\u003e#11893\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/35fcce08369ed7650b00fed7064535eeceeaba41\"\u003e35fcce0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies (\u003ca href=\"https://github.com/ibis-project/ibis/commit/aa16d0885ff62ac92ec1027a245158896f74cc0d\"\u003eaa16d08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e support pyspark 4.0 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e9c35e6a3574855daf4e02f4217727df0d54872d\"\u003ee9c35e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esinglestoredb:\u003c/strong\u003e add SingleStoreDB backend (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11595\"\u003e#11595\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a83cfef0f6b84f3dbb83ca55682100f32488d7c2\"\u003ea83cfef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport JSON literal values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11728\"\u003e#11728\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/38b19c765f02b18684ec6e7b4e0815d117fc8b60\"\u003e38b19c7\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11727\"\u003e#11727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e improve typing of ibis.common.collections (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e3aba92c6126e556e179f2cbff3dc837802de790\"\u003ee3aba92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make dtype() and schema() more typesafe (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11856\"\u003e#11856\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/116886f807fbf62ce0265ef152f48540c284b8c5\"\u003e116886f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make more arguments positional-only (\u003ca href=\"https://github.com/ibis-project/ibis/commit/610c4504b438b5ac302b384073134ff5c8458908\"\u003e610c450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make types more precise for many common Values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11771\"\u003e#11771\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2eb772a7a8a5632edb347ecd49af5773c268d188\"\u003e2eb772a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd order_by to first and last (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7ead7876435c55a10dc5a6457a49b9e19b7a654e\"\u003e7ead787\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11656\"\u003e#11656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd upper _method_overrides in decompile (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e7956f4cbb5daef11bbc01177ccc56f5ae3bf3fa\"\u003ee7956f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11717\"\u003e#11717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e relax decimal upper bounds (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d05751b445d65ae0a1c786c756ea1235d51a7f18\"\u003ed05751b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebiquery:\u003c/strong\u003e use qualified table name for upserts (\u003ca href=\"https://github.com/ibis-project/ibis/commit/120b2d874d7b191886dcdad69be76c26bbe062ce\"\u003e120b2d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecitation:\u003c/strong\u003e fix CITATION.cff [skip ci] (\u003ca href=\"https://github.com/ibis-project/ibis/commit/305526a8d6df097765b2affce60b1731f2608a1b\"\u003e305526a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ed346e6d33157d9cf6e01f91bc67ac8866e09eb3\"\u003eed346e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e make decimal casts more permissive (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba087d2d3a6c57451bdcf81aaa4fa5cf32350831\"\u003eba087d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin dep on sqlglot to \u0026lt;28 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3e9156ef0b0b10ce6f3d95db97401175a7d9df56\"\u003e3e9156e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e sqlglot 28.0 incompatibilities (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11839\"\u003e#11839\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ab21efd939b7cd6b7cf8f03ed7a22ec96d511be0\"\u003eab21efd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e typo in Ibis description in why.qmd (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11816\"\u003e#11816\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/402c37d9920fa09bcc1aa5f9202367b01cc98ef1\"\u003e402c37d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003educkdb:\u003c/strong\u003e create a single table from Python data object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7f82e5e4aed0a492538016bfa152132ad0bc928f\"\u003e7f82e5e\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11709\"\u003e#11709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexasol:\u003c/strong\u003e update Exasol Docker image tag to 2025.1.8 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11806\"\u003e#11806\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2414952998f5f078b931e467e5b7f495062308ed\"\u003e2414952\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11703\"\u003e#11703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eflink:\u003c/strong\u003e don't pass unsupported \u0026quot;position\u0026quot; flag to regexp_replace (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34f39ccb32be76b5e61f87938ed4cfdeb560ce7c\"\u003e34f39cc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emssql:\u003c/strong\u003e use \u003ccode\u003esge.National\u003c/code\u003e to support unicode in \u003ccode\u003einformation_schema\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11877\"\u003e#11877\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a254ccb02f58d4f5b5f582249f5cfa03d141d8eb\"\u003ea254ccb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emysql:\u003c/strong\u003e use getuser() and empty password string by default (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11904\"\u003e#11904\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba0218f1bba2cbb9f2bb3a7aea39178365c0f663\"\u003eba0218f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e handle cross joins without passing join keys (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d3c3bad21a2b9703047dbf4977d3d250759d189e\"\u003ed3c3bad\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11764\"\u003e#11764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e support asof_join with no predicates (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3fc9b64c2a464f66d5ed412e7cab7a7bbb58b811\"\u003e3fc9b64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgres:\u003c/strong\u003e fix postgres asof joins to consider predicates correctly (\u003ca href=\"https://github.com/ibis-project/ibis/commit/064bd2d024d1165a92615613d977e85d4dad6331\"\u003e064bd2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove bogus leading ' from Struct repr (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d7083c2c96e12bb7b2a1e643a52b4725f4303fcb\"\u003ed7083c2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereturn a tuple, not generator, from Table.bind() (\u003ca href=\"https://github.com/ibis-project/ibis/commit/cfc8b0837e313bd76cf65561472a605ea6e35bef\"\u003ecfc8b08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e create a single table from Python object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/4e6ddcfa2d1dc763d431925b059c458cd0ce884a\"\u003e4e6ddcf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e precision loss in divide (\u003ca href=\"https://github.com/ibis-project/ibis/commit/c77e1bd041df7e091c0c6c1aa5d2e87c3a99dddc\"\u003ec77e1bd\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/ibis-project/ibis/blob/main/docs/release_notes_generated.qmd\"\u003eibis-framework's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/ibis-project/ibis/compare/11.0.0...12.0.0\"\u003e12.0.0\u003c/a\u003e (2026-02-07)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e PySpark \u0026lt;3.5 is no longer supported\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e implement \u003ccode\u003eupsert()\u003c/code\u003e using \u003ccode\u003eMERGE INTO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11624\"\u003e#11624\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9126733b38e1c92f6e787f92dc9954e88ab6400d\"\u003e9126733\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/5391\"\u003e#5391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support Table.cast(my_col=int) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/9e209f37b6228472071ef8b9168ed56ec9c0a727\"\u003e9e209f3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatabricks:\u003c/strong\u003e support json literals (\u003ca href=\"https://github.com/ibis-project/ibis/commit/f46a58f9eb5128e64981b756b0a866e291663997\"\u003ef46a58f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatafusion:\u003c/strong\u003e add compilation rule for Strftime (\u003ca href=\"https://github.com/ibis-project/ibis/commit/6fa8411e43a68f0f0ac38f493242bc1ff28a5253\"\u003e6fa8411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e enable compatibility with pandas 3.0.0 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11873\"\u003e#11873\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34a36be80e589e449501942bda8ec4125e89beb0\"\u003e34a36be\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ematerialize:\u003c/strong\u003e add new backend for Materialize streaming database (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11893\"\u003e#11893\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/35fcce08369ed7650b00fed7064535eeceeaba41\"\u003e35fcce0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eofficially drop support for 3.9, bump all dependencies (\u003ca href=\"https://github.com/ibis-project/ibis/commit/aa16d0885ff62ac92ec1027a245158896f74cc0d\"\u003eaa16d08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epyspark:\u003c/strong\u003e support pyspark 4.0 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e9c35e6a3574855daf4e02f4217727df0d54872d\"\u003ee9c35e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esinglestoredb:\u003c/strong\u003e add SingleStoreDB backend (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11595\"\u003e#11595\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a83cfef0f6b84f3dbb83ca55682100f32488d7c2\"\u003ea83cfef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport JSON literal values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11728\"\u003e#11728\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/38b19c765f02b18684ec6e7b4e0815d117fc8b60\"\u003e38b19c7\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11727\"\u003e#11727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e improve typing of ibis.common.collections (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e3aba92c6126e556e179f2cbff3dc837802de790\"\u003ee3aba92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make dtype() and schema() more typesafe (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11856\"\u003e#11856\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/116886f807fbf62ce0265ef152f48540c284b8c5\"\u003e116886f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make more arguments positional-only (\u003ca href=\"https://github.com/ibis-project/ibis/commit/610c4504b438b5ac302b384073134ff5c8458908\"\u003e610c450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping:\u003c/strong\u003e make types more precise for many common Values (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11771\"\u003e#11771\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2eb772a7a8a5632edb347ecd49af5773c268d188\"\u003e2eb772a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd order_by to first and last (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7ead7876435c55a10dc5a6457a49b9e19b7a654e\"\u003e7ead787\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11656\"\u003e#11656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd upper _method_overrides in decompile (\u003ca href=\"https://github.com/ibis-project/ibis/commit/e7956f4cbb5daef11bbc01177ccc56f5ae3bf3fa\"\u003ee7956f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11717\"\u003e#11717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e relax decimal upper bounds (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d05751b445d65ae0a1c786c756ea1235d51a7f18\"\u003ed05751b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebiquery:\u003c/strong\u003e use qualified table name for upserts (\u003ca href=\"https://github.com/ibis-project/ibis/commit/120b2d874d7b191886dcdad69be76c26bbe062ce\"\u003e120b2d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecitation:\u003c/strong\u003e fix CITATION.cff [skip ci] (\u003ca href=\"https://github.com/ibis-project/ibis/commit/305526a8d6df097765b2affce60b1731f2608a1b\"\u003e305526a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e infer decimal precision and scale (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ed346e6d33157d9cf6e01f91bc67ac8866e09eb3\"\u003eed346e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatatypes:\u003c/strong\u003e make decimal casts more permissive (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba087d2d3a6c57451bdcf81aaa4fa5cf32350831\"\u003eba087d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin dep on sqlglot to \u0026lt;28 (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3e9156ef0b0b10ce6f3d95db97401175a7d9df56\"\u003e3e9156e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e sqlglot 28.0 incompatibilities (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11839\"\u003e#11839\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ab21efd939b7cd6b7cf8f03ed7a22ec96d511be0\"\u003eab21efd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e typo in Ibis description in why.qmd (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11816\"\u003e#11816\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/402c37d9920fa09bcc1aa5f9202367b01cc98ef1\"\u003e402c37d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003educkdb:\u003c/strong\u003e create a single table from Python data object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/7f82e5e4aed0a492538016bfa152132ad0bc928f\"\u003e7f82e5e\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11709\"\u003e#11709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexasol:\u003c/strong\u003e update Exasol Docker image tag to 2025.1.8 (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11806\"\u003e#11806\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/2414952998f5f078b931e467e5b7f495062308ed\"\u003e2414952\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11703\"\u003e#11703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eflink:\u003c/strong\u003e don't pass unsupported \u0026quot;position\u0026quot; flag to regexp_replace (\u003ca href=\"https://github.com/ibis-project/ibis/commit/34f39ccb32be76b5e61f87938ed4cfdeb560ce7c\"\u003e34f39cc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emssql:\u003c/strong\u003e use \u003ccode\u003esge.National\u003c/code\u003e to support unicode in \u003ccode\u003einformation_schema\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11877\"\u003e#11877\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a254ccb02f58d4f5b5f582249f5cfa03d141d8eb\"\u003ea254ccb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emysql:\u003c/strong\u003e use getuser() and empty password string by default (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11904\"\u003e#11904\u003c/a\u003e) (\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba0218f1bba2cbb9f2bb3a7aea39178365c0f663\"\u003eba0218f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e handle cross joins without passing join keys (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d3c3bad21a2b9703047dbf4977d3d250759d189e\"\u003ed3c3bad\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11764\"\u003e#11764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epolars:\u003c/strong\u003e support asof_join with no predicates (\u003ca href=\"https://github.com/ibis-project/ibis/commit/3fc9b64c2a464f66d5ed412e7cab7a7bbb58b811\"\u003e3fc9b64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgres:\u003c/strong\u003e fix postgres asof joins to consider predicates correctly (\u003ca href=\"https://github.com/ibis-project/ibis/commit/064bd2d024d1165a92615613d977e85d4dad6331\"\u003e064bd2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove bogus leading ' from Struct repr (\u003ca href=\"https://github.com/ibis-project/ibis/commit/d7083c2c96e12bb7b2a1e643a52b4725f4303fcb\"\u003ed7083c2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereturn a tuple, not generator, from Table.bind() (\u003ca href=\"https://github.com/ibis-project/ibis/commit/cfc8b0837e313bd76cf65561472a605ea6e35bef\"\u003ecfc8b08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e create a single table from Python object (\u003ca href=\"https://github.com/ibis-project/ibis/commit/4e6ddcfa2d1dc763d431925b059c458cd0ce884a\"\u003e4e6ddcf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esqlite:\u003c/strong\u003e precision loss in divide (\u003ca href=\"https://github.com/ibis-project/ibis/commit/c77e1bd041df7e091c0c6c1aa5d2e87c3a99dddc\"\u003ec77e1bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport \u003ccode\u003eBackend == \u0026quot;some non backend object\u0026quot;\u003c/code\u003e (\u003ca href=\"https://github.com/ibis-project/ibis/commit/a5e7c2298d1582261c0963040a687c3987507c62\"\u003ea5e7c22\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/ibis-project/ibis/commit/01e429b210f19f87e0284bd18fb072df6d3baa59\"\u003e\u003ccode\u003e01e429b\u003c/code\u003e\u003c/a\u003e chore(release): 12.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/537b346aecbaaad232d08ae9a12d38d211ae0926\"\u003e\u003ccode\u003e537b346\u003c/code\u003e\u003c/a\u003e chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/76c3b63b33f9e6ee2993e2a2875f22ed3e405349\"\u003e\u003ccode\u003e76c3b63\u003c/code\u003e\u003c/a\u003e chore(deps): update astral-sh/setup-uv action to v7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/da202da06c17a525caf767f0f995f65108a8f3f3\"\u003e\u003ccode\u003eda202da\u003c/code\u003e\u003c/a\u003e chore(deps): update apache/druid docker tag to v36\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/ba0218f1bba2cbb9f2bb3a7aea39178365c0f663\"\u003e\u003ccode\u003eba0218f\u003c/code\u003e\u003c/a\u003e fix(mysql): use getuser() and empty password string by default (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11904\"\u003e#11904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/a4ef82f82ef103fd233560adce0fbe220481d7ef\"\u003e\u003ccode\u003ea4ef82f\u003c/code\u003e\u003c/a\u003e chore(deps): update aws-actions/configure-aws-credentials action to v6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/601cd8f3dc18c7f8a91aa91319b68aaa181a8a16\"\u003e\u003ccode\u003e601cd8f\u003c/code\u003e\u003c/a\u003e chore(deps): update ghcr.io/singlestore-labs/singlestoredb-dev docker tag to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/14c912425af4b318733fdc1460913ccfa4613414\"\u003e\u003ccode\u003e14c9124\u003c/code\u003e\u003c/a\u003e chore(deps): update materialize/materialized docker tag to v26.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/b746edfb660c2b8155debc135884376742cc6929\"\u003e\u003ccode\u003eb746edf\u003c/code\u003e\u003c/a\u003e chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.9.30\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ibis-project/ibis/commit/7da40126f178a29d6211f8cfe29421585cff59fc\"\u003e\u003ccode\u003e7da4012\u003c/code\u003e\u003c/a\u003e chore(deps): upgrade ruff, and fix lint violations (\u003ca href=\"https://redirect.github.com/ibis-project/ibis/issues/11899\"\u003e#11899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ibis-project/ibis/compare/10.8.0...12.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.38.0 to 2.49.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.49.0.dev0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.48.0...v2.49.0-dev0\"\u003e2.49.0-dev0\u003c/a\u003e (2026-01-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove deprecated rsa dependency (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e98cf69284d3620619a70b54fb0b9533caf11878\"\u003ee98cf69284d3620619a70b54fb0b9533caf11878\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth 2.48.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-21)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827\"\u003e383c9827\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b\"\u003e454b441b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2\"\u003e52558ae2\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1\"\u003e8dcf91a1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064\"\u003e25c1b064\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a240\"\u003e3f88a240\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e\"\u003e97bfea9e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e10\"\u003ebfc07e10\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20c\"\u003ee431f20c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.48.0rc0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0rc0\"\u003e2.48.0rc0\u003c/a\u003e (2026-01-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehonor NO_GCE_CHECK environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c98\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse user_verification=preferred for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set by empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoved content-header from AWS IMDS (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea\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/googleapis/google-auth-library-python/blob/main/CHANGELOG.md\"\u003egoogle-auth's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/google-auth/#history\"\u003ePyPI History\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-22)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558ae2881b1e6555f6f5c0d76365c15807ead9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91a1b05c85fbbd0bcee78d66e498099102ab\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c9827536d9376e8248370ce4c2b83e468d027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064545702cbef087cfcd15fbbb6ef1af74f\"\u003e25c1b064545702cbef087cfcd15fbbb6ef1af74f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f20cf73ccac71926a23ec454468cea92e053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a24089c4ee6822d510de0db210b54260d873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.46.0...v2.47.0\"\u003e2.47.0\u003c/a\u003e (2026-01-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop \u003ccode\u003ecachetools\u003c/code\u003e dependency in favor of simple local implementation (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1590\"\u003e#1590\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\"\u003e5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 support (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1918\"\u003e#1918\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\"\u003e60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.45.0...v2.46.0\"\u003e2.46.0\u003c/a\u003e (2026-01-05)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate urllib3 docstrings for v2 compatibility (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f1aeea2d1014ea1d244a4c3470e52d74d55404b\"\u003e3f1aeea2d1014ea1d244a4c3470e52d74d55404b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRecognize workload certificate config in has_default_client_cert_source for mTLS for Agentic Identities (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1907\"\u003e#1907\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/0b9107d573123e358c347ffa067637f992af61b4\"\u003e0b9107d573123e358c347ffa067637f992af61b4\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\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-auth-library-python/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.0.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.11.7 to 3.11.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.8 - 2026-03-31\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/5cbb3d0398a2f42de51210270286fecd798c5d78\"\u003e\u003ccode\u003e5cbb3d0\u003c/code\u003e\u003c/a\u003e 3.11.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4195d7f263e33076295b75efdcbaf6a55af8674e\"\u003e\u003ccode\u003e4195d7f\u003c/code\u003e\u003c/a\u003e writer::half\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d00641b69410728a735f0855eb1c2843b0a5819b\"\u003e\u003ccode\u003ed00641b\u003c/code\u003e\u003c/a\u003e writer::uuid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/c84d9b4ba4853781af943fa5c493e261e2f82b84\"\u003e\u003ccode\u003ec84d9b4\u003c/code\u003e\u003c/a\u003e build and compatibility misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/4547234b681fac5e0e0734cf44c21e75f9654e43\"\u003e\u003ccode\u003e4547234\u003c/code\u003e\u003c/a\u003e ffi::numpy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/0d4a5ad1f17a72528ba027554466fdec6580cdeb\"\u003e\u003ccode\u003e0d4a5ad\u003c/code\u003e\u003c/a\u003e datetime PyRef idiom\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/e93a13d372ec956d027e71d023eb534b8445ac85\"\u003e\u003ccode\u003ee93a13d\u003c/code\u003e\u003c/a\u003e Cross-compile avoids maturin v1.12 build-details.json error\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.7...3.11.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.2.3 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.o...\n\n_Description has been truncated_","html_url":"https://github.com/Canner/wren-engine/pull/1590","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Canner%2Fwren-engine/issues/1590","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1590/packages"}},{"old_version":"\u003e=4.0.0","new_version":"\u003e=4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-04-27T08:07:12.000Z","version_change":"\u003e=4.0.0 → \u003e=4.14.2","issue":{"uuid":"4334127464","node_id":"PR_kwDOOjuZ687V4G7e","number":1207,"state":"closed","title":"chore(deps)(deps-dev): update testcontainers requirement from \u003e=4.0.0 to \u003e=4.14.2","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-06-20T19:58:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T08:07:12.000Z","updated_at":"2026-06-20T19:58:31.000Z","time_to_close":4708269,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.0.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.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 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/herringbonedev/Herringbone/pull/1207","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/herringbonedev%2FHerringbone/issues/1207","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1207/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":null,"pr_created_at":"2026-04-26T07:14:34.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4330291032","node_id":"PR_kwDOH5nOwc7VsZWA","number":243,"state":"closed","title":"Bump the uv-version group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-03T07:13:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-26T07:14:34.000Z","updated_at":"2026-05-03T07:13:54.000Z","time_to_close":604758,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-version","update_count":8,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"google-api-python-client","old_version":"2.191.0","new_version":"2.194.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-cloud-secret-manager","old_version":"2.26.0","new_version":"2.27.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"confluent-kafka","old_version":"2.13.2","new_version":"2.14.0","repository_url":"https://github.com/confluentinc/confluent-kafka-python"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-version group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.191.0` | `2.194.0` |\n| [google-cloud-secret-manager](https://github.com/googleapis/google-cloud-python) | `2.26.0` | `2.27.0` |\n| [confluent-kafka](https://github.com/confluentinc/confluent-kafka-python) | `2.13.2` | `2.14.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.10` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-api-python-client` from 2.191.0 to 2.194.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-api-python-client/releases\"\u003egoogle-api-python-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.194.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.193.0...v2.194.0\"\u003e2.194.0\u003c/a\u003e (2026-04-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealloydb:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eanalyticsadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapigee:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapikeys:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eappengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eartifactregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquerydatatransfer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003echat:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbilling:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbuild:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclouddeploy:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudkms:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudsearch:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudtasks:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econfig:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econnectors:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtactcenterinsights:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatamigration:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\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/googleapis/google-api-python-client/commit/10436ecbe9201c8af9ad235a05d77e5e05e6462e\"\u003e\u003ccode\u003e10436ec\u003c/code\u003e\u003c/a\u003e chore(main): release 2.194.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e\u003ccode\u003e2d0b3b1\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2737\"\u003e#2737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e\u003ccode\u003e4b1cfc7\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2735\"\u003e#2735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a82af07571da6c3c0ccfd2d9cf234785c3783e57\"\u003e\u003ccode\u003ea82af07\u003c/code\u003e\u003c/a\u003e chore: Migrate gsutil usage to gcloud storage (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2705\"\u003e#2705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003e\u003ccode\u003eb6b55b6\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2732\"\u003e#2732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/00266153237185a9de250645f7dcc082b9189ce1\"\u003e\u003ccode\u003e0026615\u003c/code\u003e\u003c/a\u003e chore(main): release 2.193.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2728\"\u003e#2728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003e\u003ccode\u003ea7eaabb\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2729\"\u003e#2729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e\u003ccode\u003e3f48f2b\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2727\"\u003e#2727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/22028738645b236f967a47000b57dd823e722c12\"\u003e\u003ccode\u003e2202873\u003c/code\u003e\u003c/a\u003e chore(main): release 2.192.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2726\"\u003e#2726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/45a338522e6c484029833b3bcf7fe73c58648e55\"\u003e\u003ccode\u003e45a3385\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2725\"\u003e#2725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.191.0...v2.194.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-secret-manager` from 2.26.0 to 2.27.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-secret-manager's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-firestore: v2.27.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-firestore-v2.26.0...google-cloud-firestore-v2.27.0\"\u003ev2.27.0\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-secret-manager's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v2.26.0...google-cloud-documentai-v2.27.0\"\u003e2.27.0\u003c/a\u003e (2024-04-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Chunk header and footer in Doc AI external proto (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep the API doc up-to-date with recent changes (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f19d85b8083b57c2e60b8cd257d3e1f419e7eed\"\u003e\u003ccode\u003e0f19d85\u003c/code\u003e\u003c/a\u003e chore: fix missing heading in changelog (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16189\"\u003e#16189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a16755d8e2fcd941e94cc967a5acd72c95eb7644\"\u003e\u003ccode\u003ea16755d\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T111101Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9694ce943e2b7f4729b78e80b25a6729bfb292ca\"\u003e\u003ccode\u003e9694ce9\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T114549Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c4a35cf59cc2d82243fdd6e2bd5cab981f3a1467\"\u003e\u003ccode\u003ec4a35cf\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T132735Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16146\"\u003e#16146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/640a86b3ba70b191984c3edaded68ddbe5e540d8\"\u003e\u003ccode\u003e640a86b\u003c/code\u003e\u003c/a\u003e chore: librarian update image pull request: 20260325T221325Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16175\"\u003e#16175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/341284c80e2f09149467541767499f30b369df55\"\u003e\u003ccode\u003e341284c\u003c/code\u003e\u003c/a\u003e chore(deps): bump pyasn1 from 0.6.1 to 0.6.3 in /packages/sqlalchemy-spanner ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ec9262c45055d3d2b596cdde1649d3ce90b4347d\"\u003e\u003ccode\u003eec9262c\u003c/code\u003e\u003c/a\u003e fix: Allow Protobuf 7.x, require Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16102\"\u003e#16102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/cf50cea185f2ad4763a14f1f0c14ca50fc2fe418\"\u003e\u003ccode\u003ecf50cea\u003c/code\u003e\u003c/a\u003e feat(firestore): literals pipeline stage (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16028\"\u003e#16028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4b400faca2fcd40f68a812dc6f47a79d0cbf7433\"\u003e\u003ccode\u003e4b400fa\u003c/code\u003e\u003c/a\u003e chore: librarian generate pull request: 20260325T142358Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16166\"\u003e#16166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-secret-manager-v2.26.0...google-cloud-secret-manager-v2.27.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `confluent-kafka` from 2.13.2 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/releases\"\u003econfluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/blob/master/CHANGELOG.md\"\u003econfluent-kafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 - 2026-04-01\u003c/h2\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/commit/a2f066da6bbf28d3285b1c6b4764ad68967aac55\"\u003e\u003ccode\u003ea2f066d\u003c/code\u003e\u003c/a\u003e v2.14.0 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d80ff360bfc01690c5c59d24ff1f3fdfa4505867\"\u003e\u003ccode\u003ed80ff36\u003c/code\u003e\u003c/a\u003e Add current release candidate to setup_all_versions.py (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/ea948daf03c959984459dd5b2971ca270078a270\"\u003e\u003ccode\u003eea948da\u003c/code\u003e\u003c/a\u003e v2.14.0rc1 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2224\"\u003e#2224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/73c7953fbc0fbb80af6335078500d9b7cfcc8296\"\u003e\u003ccode\u003e73c7953\u003c/code\u003e\u003c/a\u003e Avoid redundant lookup_schema call in _get_reader_schema when use_schema_id i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/410a59c8ca81fdf06fbc38dc2b86947e15dcb8da\"\u003e\u003ccode\u003e410a59c\u003c/code\u003e\u003c/a\u003e Add enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/f3af6aa5a65aa7754b919d988f30d48dbce96f36\"\u003e\u003ccode\u003ef3af6aa\u003c/code\u003e\u003c/a\u003e Remove callback wrapping for oauth_cb in AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d313cac869b3e0f6810a7b1e1127f436115199f6\"\u003e\u003ccode\u003ed313cac\u003c/code\u003e\u003c/a\u003e Fix return type signature for context managers (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/40e8a6fa9db68405cbed31c877d4e92ffe25aaf2\"\u003e\u003ccode\u003e40e8a6f\u003c/code\u003e\u003c/a\u003e Implement async context manager protocol for AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/0ed043f459b0b6e557d53111ea1afccee265378f\"\u003e\u003ccode\u003e0ed043f\u003c/code\u003e\u003c/a\u003e Fix typo (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/1691\"\u003e#1691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/cc164a1cf0c6f5bb285130fd0448acdcb0051f92\"\u003e\u003ccode\u003ecc164a1\u003c/code\u003e\u003c/a\u003e DGS-23025 Add AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/compare/v2.13.2...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\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/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\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/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\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.4 to 0.15.10\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.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.10\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.10/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- 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.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-09.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-logging\u003c/code\u003e] Allow closures in except handlers (\u003ccode\u003eLOG004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24464\"\u003e#24464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Make \u003ccode\u003eSLF\u003c/code\u003e diagnostics robust to non-self-named variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24281\"\u003e#24281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Make the fix for \u003ccode\u003ecollapsible-if\u003c/code\u003e safe in \u003ccode\u003epreview\u003c/code\u003e (\u003ccode\u003eSIM102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24371\"\u003e#24371\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid emitting multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24377\"\u003e#24377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error from \u003ccode\u003eE502\u003c/code\u003e fixes in f-strings and t-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24410\"\u003e#24410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStrip form feeds from indent passed to \u003ccode\u003ededent_to\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24381\"\u003e#24381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix panic caused by handling of octals (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24390\"\u003e#24390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject multi-line f-string elements before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24355\"\u003e#24355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Treat f-string interpolation as potential side effect (\u003ccode\u003eRUF019\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom file extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument adding fixes in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24393\"\u003e#24393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24517\"\u003e#24517\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/silverstein\"\u003e\u003ccode\u003e@​silverstein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shizukushq\"\u003e\u003ccode\u003e@​shizukushq\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\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/252f76102a618bff6537b6c53c316ca3837f4abf\"\u003e\u003ccode\u003e252f761\u003c/code\u003e\u003c/a\u003e Bump 0.15.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24519\"\u003e#24519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/37a1ec8bb8e30955787b0cdf6e97f7f2254dba7f\"\u003e\u003ccode\u003e37a1ec8\u003c/code\u003e\u003c/a\u003e [ty] Fix assignability of intersections with bounded typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24502\"\u003e#24502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f518cc9ca0c830773dd49c3964eb5e49d52c8aed\"\u003e\u003ccode\u003ef518cc9\u003c/code\u003e\u003c/a\u003e [ty] Allow partially stringified \u003ccode\u003etype[…]\u003c/code\u003e annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24518\"\u003e#24518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16c4090d0a711b9c0523b932014f3daf140f35bc\"\u003e\u003ccode\u003e16c4090\u003c/code\u003e\u003c/a\u003e docs: fix JSON typo in settings example (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24517\"\u003e#24517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/99d97bd72f1934ac2af93e52468c10ef1c7a1a4e\"\u003e\u003ccode\u003e99d97bd\u003c/code\u003e\u003c/a\u003e [ty] Tighten up a few edge cases in \u003ccode\u003eConcatenate\u003c/code\u003e type-expression parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2714e345bdd64a5baae3844c0d25db7b0b9fe330\"\u003e\u003ccode\u003e2714e34\u003c/code\u003e\u003c/a\u003e [ty] Enable \u003ccode\u003epull-diagnostics\u003c/code\u003e by default in E2E tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24516\"\u003e#24516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8bc700722ab1b7272a4d724839da7c569b349d4\"\u003e\u003ccode\u003ed8bc700\u003c/code\u003e\u003c/a\u003e LSP: Add support for custom extensions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24463\"\u003e#24463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a45f96d65dbd4f958b07accd718f8d2af48cb956\"\u003e\u003ccode\u003ea45f96d\u003c/code\u003e\u003c/a\u003e [ty] stop special-casing str constructor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24514\"\u003e#24514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87a0f01cfd016e0297ef05ab638cde006bf8d947\"\u003e\u003ccode\u003e87a0f01\u003c/code\u003e\u003c/a\u003e [ruff] Treat f-string interpolation as potential side effect in RUF019 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24426\"\u003e#24426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9ba8489b8d1f1fd5fd66887a74d5f2f58f733d4\"\u003e\u003ccode\u003ee9ba848\u003c/code\u003e\u003c/a\u003e [ty] Fix excess subscript argument inference for non-generic types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24354\"\u003e#24354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and securit...\n\n_Description has been truncated_","html_url":"https://github.com/navikt/dvh-airflow-kafka/pull/243","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/navikt%2Fdvh-airflow-kafka/issues/243","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/243/packages"}},{"old_version":"4.9.0","new_version":"4.14.2","update_type":"minor","path":null,"pr_created_at":"2026-04-23T10:55:54.000Z","version_change":"4.9.0 → 4.14.2","issue":{"uuid":"4315416663","node_id":"PR_kwDOR6S1x87U8oRn","number":63,"state":"closed","title":"deps(deps): bump the minor-and-patch group across 1 directory with 27 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T07:22:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-23T10:55:54.000Z","updated_at":"2026-05-11T07:22:38.000Z","time_to_close":1542401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"minor-and-patch","update_count":27,"packages":[{"name":"fastapi","old_version":"0.115.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.30.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"arq","old_version":"0.26.3","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"curl-cffi","old_version":"0.7.3","new_version":"0.15.0","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"camoufox","old_version":"0.4.4","new_version":"0.4.11","repository_url":"https://github.com/daijro/camoufox"},{"name":"patchright","old_version":"1.52.5","new_version":"1.59.1","repository_url":"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python"},{"name":"pydantic","old_version":"2.10.0","new_version":"2.13.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-levenshtein","old_version":"0.25.0","new_version":"0.27.3","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"tldextract","old_version":"5.1.0","new_version":"5.3.1","repository_url":"https://github.com/john-kurkowski/tldextract"},{"name":"celery","old_version":"5.4.0","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"sqlalchemy","old_version":"2.0.30","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"imagehash","old_version":"4.3.1","new_version":"4.3.2","repository_url":"https://github.com/JohannesBuchner/imagehash"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"sentry-sdk","old_version":"2.22.0","new_version":"2.58.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"prometheus-client","old_version":"0.21.0","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"fakeredis","old_version":"2.26.1","new_version":"2.35.1","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"moto","old_version":"5.0.0","new_version":"5.2.0","repository_url":"https://github.com/getmoto/moto"},{"name":"testcontainers","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"respx","old_version":"0.21.1","new_version":"0.23.1","repository_url":"https://github.com/lundberg/respx"},{"name":"jsonschema","old_version":"4.23.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"mypy","old_version":"1.11.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.6.0","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pip-audit","old_version":"2.7.3","new_version":"2.10.0","repository_url":"https://github.com/pypa/pip-audit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.136.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.0` | `0.46.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [arq](https://github.com/python-arq/arq) | `0.26.3` | `0.28.0` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.7.3` | `0.15.0` |\n| [camoufox](https://github.com/daijro/camoufox) | `0.4.4` | `0.4.11` |\n| [patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python) | `1.52.5` | `1.59.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.10.0` | `2.13.3` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.25.0` | `0.27.3` |\n| [tldextract](https://github.com/john-kurkowski/tldextract) | `5.1.0` | `5.3.1` |\n| [celery](https://github.com/celery/celery) | `5.4.0` | `5.6.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.30` | `2.0.49` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [imagehash](https://github.com/JohannesBuchner/imagehash) | `4.3.1` | `4.3.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.12` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.14.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.22.0` | `2.58.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.0` | `0.25.0` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.26.1` | `2.35.1` |\n| [moto](https://github.com/getmoto/moto) | `5.0.0` | `5.2.0` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.9.0` | `4.14.2` |\n| [respx](https://github.com/lundberg/respx) | `0.21.1` | `0.23.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.11.0` | `1.20.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.6.0` | `0.15.12` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.7.3` | `2.10.0` |\n\n\nUpdates `fastapi` from 0.115.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.30.0 to 0.46.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.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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\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/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.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\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\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/2913\"\u003e#2913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Explicitly start ASGI run with empty context\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003cp\u003eYou can quit Uvicorn now. We heard you, \u003ca href=\"https://github.com/pamelafox\"\u003e\u003ccode\u003e@​pamelafox\u003c/code\u003e\u003c/a\u003e - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e for the fix 🙏). \u003ca href=\"https://x.com/pamelafox/status/2039097686155227623\"\u003eSee the tweet\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\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/b224045f5900b7f766743bcb16ba9fc3adea2606\"\u003e\u003ccode\u003eb224045\u003c/code\u003e\u003c/a\u003e Version 0.46.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2918\"\u003e#2918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7375b5bf66d962186d663e85615d4b4d956bf880\"\u003e\u003ccode\u003e7375b5b\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d438fb16fe2d23c7bbc2ca7094645cff1f116458\"\u003e\u003ccode\u003ed438fb1\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3e6b96446653d0156434bce529a14c80764c9eda\"\u003e\u003ccode\u003e3e6b964\u003c/code\u003e\u003c/a\u003e Support \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\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2c423bd82be169459ea254a61476de34767e0326\"\u003e\u003ccode\u003e2c423bd\u003c/code\u003e\u003c/a\u003e Version 0.45.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7f027f8e25e47668a9c2ce8b5c21b35054c48d02\"\u003e\u003ccode\u003e7f027f8\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/73a80c3cc87de269ed016e584a25e585ae6f2b44\"\u003e\u003ccode\u003e73a80c3\u003c/code\u003e\u003c/a\u003e Add \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\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/45c0b568d38e9bf4f2f036bc2d79eb98b0e72f72\"\u003e\u003ccode\u003e45c0b56\u003c/code\u003e\u003c/a\u003e Revert empty context for ASGI runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/850d92656de0cb5859ee5f6ba252e19ad3d38989\"\u003e\u003ccode\u003e850d926\u003c/code\u003e\u003c/a\u003e Raise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/fdcacb4b83bc686ea1ba9e50ffe5b8cfe49b3e00\"\u003e\u003ccode\u003efdcacb4\u003c/code\u003e\u003c/a\u003e Accept \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\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.30.0...0.46.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.29.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.30.0\u003c/h2\u003e\n\u003cp\u003eSupport Python 3.13 and PostgreSQL 17.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImplement GSSAPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1d4e5680 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1122\"\u003e#1122\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement SSPI authentication\n(by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in 1aab2094 for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1128\"\u003e#1128\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd initial typings\n(by \u003ca href=\"https://github.com/bryanforbes\"\u003e\u003ccode\u003e@​bryanforbes\u003c/code\u003e\u003c/a\u003e in d42432bf for \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1127\"\u003e#1127\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow building with Cython 3\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arq` from 0.26.3 to 0.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-arq/arq/releases\"\u003earq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.28.0 2026-04-16\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/522\"\u003epython-arq/arq#522\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-arq/arq/compare/v0.27.0...v0.28.0\"\u003ehttps://github.com/python-arq/arq/compare/v0.27.0...v0.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.27.0 2026-02-02\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13, remove advertised support for Python 3.8 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/514\"\u003epython-arq/arq#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eApply lint and format for Python 3.9 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/515\"\u003epython-arq/arq#515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse uv, update actions by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/516\"\u003epython-arq/arq#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate project URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/517\"\u003epython-arq/arq#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eretry_on_error\u003c/code\u003e type annotation by \u003ca href=\"https://github.com/armicron\"\u003e\u003ccode\u003e@​armicron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/446\"\u003epython-arq/arq#446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix wrong reference in \u003ccode\u003eRetry\u003c/code\u003e docstring by \u003ca href=\"https://github.com/PassionateBytes\"\u003e\u003ccode\u003e@​PassionateBytes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/507\"\u003epython-arq/arq#507\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/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/514\"\u003epython-arq/arq#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/armicron\"\u003e\u003ccode\u003e@​armicron\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/446\"\u003epython-arq/arq#446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PassionateBytes\"\u003e\u003ccode\u003e@​PassionateBytes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-arq/arq/pull/507\"\u003epython-arq/arq#507\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-arq/arq/compare/v0.26.3...v0.27.0\"\u003ehttps://github.com/python-arq/arq/compare/v0.26.3...v0.27.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-arq/arq/blob/main/HISTORY.rst\"\u003earq's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev0.28.0 (2026-04-16)\n....................\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/522\"\u003e#522\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ev0.27.0 (2026-01-30)\n....................\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix wrong reference in \u003ccode\u003eRetry\u003c/code\u003e docstring by \u003ca href=\"https://github.com/PassionateBytes\"\u003e\u003ccode\u003e@​PassionateBytes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/507\"\u003e#507\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix retry_on_error type annotation by \u003ca href=\"https://github.com/armicron\"\u003e\u003ccode\u003e@​armicron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/446\"\u003e#446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, remove advertised support for Python 3.8 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-arq/arq/issues/514\"\u003e#514\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/5ee4b48cf6faf4dc181f1ccb76dfb1bc1fedf9bf\"\u003e\u003ccode\u003e5ee4b48\u003c/code\u003e\u003c/a\u003e Prepare release 0.28.0 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/5c725217832893c574e0bf215948c42d00d67bff\"\u003e\u003ccode\u003e5c72521\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/fda407c4cb5ec2e6f2b13c2aa9671f86e7a0f8c5\"\u003e\u003ccode\u003efda407c\u003c/code\u003e\u003c/a\u003e Prepare release 0.27.0 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/518\"\u003e#518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/633bba3b464cc1f162d0272a073e1c04d2b9898d\"\u003e\u003ccode\u003e633bba3\u003c/code\u003e\u003c/a\u003e Fix wrong reference in \u003ccode\u003eRetry\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/1ceb4351441b602e2d942daf57540adfe90acf38\"\u003e\u003ccode\u003e1ceb435\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eretry_on_error\u003c/code\u003e type annotation (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/446\"\u003e#446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/2354d8f52982f6e29b9ba67fd4d7e6017099d7b8\"\u003e\u003ccode\u003e2354d8f\u003c/code\u003e\u003c/a\u003e Update project URLs (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/517\"\u003e#517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/4c0602d1c49dfb364c333a3c3a3b062387c2a896\"\u003e\u003ccode\u003e4c0602d\u003c/code\u003e\u003c/a\u003e Use uv, update actions (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/4636c86bae2fb42796b60f578e7772f42c84a08a\"\u003e\u003ccode\u003e4636c86\u003c/code\u003e\u003c/a\u003e Apply lint and format for Python 3.9 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/a8b4c1706548981eab217dc9256a837ebbe73975\"\u003e\u003ccode\u003ea8b4c17\u003c/code\u003e\u003c/a\u003e Add support for Python 3.13, remove advertised support for Python 3.8 (\u003ca href=\"https://redirect.github.com/python-arq/arq/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-arq/arq/commit/0e3295b0dfda2899153a7012d642cdf077a463b7\"\u003e\u003ccode\u003e0e3295b\u003c/code\u003e\u003c/a\u003e [skip ci] add maintenance notice to readme\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-arq/arq/compare/v0.26.3...v0.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `curl-cffi` from 0.7.3 to 0.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lexiforest/curl_cffi/releases\"\u003ecurl-cffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.15.0\u003c/h2\u003e\n\u003cp\u003e🎉 Another release with significant changes!\u003c/p\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ehttp/3 fingerprints, added for Chrome 145, 146 and Firefox 147. To verify http3 fingerprints, visit \u003ca href=\"https://fp.impersonate.pro\"\u003ehttps://fp.impersonate.pro\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ehttp/3 proxy support with socks5 udp proxy server.\u003c/li\u003e\n\u003cli\u003eNew CLI tool, just called \u003ccode\u003ecurl-cffi\u003c/code\u003e, easier http debugging for both humans and agents. See \u003ca href=\"https://curl-cffi.readthedocs.io/en/latest/cli/_index.html\"\u003edocs\u003c/a\u003e. We also added a \u003ca href=\"https://github.com/lexiforest/curl_cffi/blob/main/skills/imp-fetch/SKILL.md\"\u003eskill\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCompatibility optimization, curl_cffi is now fully static. Especially for macOS, no dependencies needed and compatible with macOS since 11.0.\u003c/li\u003e\n\u003cli\u003e⚠️ Security improvement. If you are accepting urls from others and returning the response to them, you are vulnerable to redirection-based SSRF. Disable \u003ccode\u003eallow_redirects\u003c/code\u003e or at lease set \u003ccode\u003eallow_redirects=\u0026quot;safe\u0026quot;\u003c/code\u003e, see the \u003ca href=\"https://github.com/lexiforest/curl_cffi/security/advisories/GHSA-qw2m-4pqf-rmpp\"\u003eadvisory\u003c/a\u003e and the \u003ca href=\"https://curl-cffi.readthedocs.io/en/latest/security.html#ssrf-protection\"\u003edocs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePerformance optimization: WebSocket improvement and free-threading support.\u003c/li\u003e\n\u003cli\u003eAndroid is officially supported, closing a 3-years-old issue.\u003c/li\u003e\n\u003cli\u003eNew impersonation behaviors, the cookie header behavior and POST boundary are now made exactly the same as browsers. These are not part of tls or http binary fingerprints, but are exploited by WAFs, too.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe list of proxy vendors with udp sock5 support is very limited, so I set up 2 servers for testing. You can simply run:\u003c/p\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl-cffi get https://fp.impersonate.pro/api/http3 --proxy socks5://imp:curl-cffi@206.189.95.199:1080 --http3-only\r\ncurl-cffi get https://fp.impersonate.pro/api/http3 --proxy socks5://imp:curl-cffi@24.144.88.46:1080 --http3-only\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you need more udp socks5 servers from us, click the 👀 emoji to vote.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix some of the extension values being overwritten caused by applying… by \u003ca href=\"https://github.com/enter-a-new-username3\"\u003e\u003ccode\u003e@​enter-a-new-username3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/680\"\u003elexiforest/curl_cffi#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypehint session return values and internal functions by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/664\"\u003elexiforest/curl_cffi#664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd free threaded builds by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/697\"\u003elexiforest/curl_cffi#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAsync WebSocket: Docs, Safety \u0026amp; Performance Improvements by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/692\"\u003elexiforest/curl_cffi#692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Android by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/699\"\u003elexiforest/curl_cffi#699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd type hint for request responses by \u003ca href=\"https://github.com/MFTabriz\"\u003e\u003ccode\u003e@​MFTabriz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/690\"\u003elexiforest/curl_cffi#690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResponse hint fix for \u0026lt; 3.13 by \u003ca href=\"https://github.com/novitae\"\u003e\u003ccode\u003e@​novitae\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/546\"\u003elexiforest/curl_cffi#546\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix BufferError Crash by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/700\"\u003elexiforest/curl_cffi#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWS: Small Optimizations by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/702\"\u003elexiforest/curl_cffi#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for retrying by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/689\"\u003elexiforest/curl_cffi#689\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWS: Update Docs by \u003ca href=\"https://github.com/Sh3llcod3\"\u003e\u003ccode\u003e@​Sh3llcod3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/705\"\u003elexiforest/curl_cffi#705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable http3 fingerprints by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/712\"\u003elexiforest/curl_cffi#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for loongarch64 by \u003ca href=\"https://github.com/wxpppp\"\u003e\u003ccode\u003e@​wxpppp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/716\"\u003elexiforest/curl_cffi#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake the CLI more useful by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/726\"\u003elexiforest/curl_cffi#726\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option to mitigate SSRF by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/727\"\u003elexiforest/curl_cffi#727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose http3 fingerprints customization by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/728\"\u003elexiforest/curl_cffi#728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd body to response.request by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/710\"\u003elexiforest/curl_cffi#710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix Makefile issue by \u003ca href=\"https://github.com/p9s\"\u003e\u003ccode\u003e@​p9s\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/655\"\u003elexiforest/curl_cffi#655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for READFUNCTION by \u003ca href=\"https://github.com/lexiforest\"\u003e\u003ccode\u003e@​lexiforest\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/698\"\u003elexiforest/curl_cffi#698\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/enter-a-new-username3\"\u003e\u003ccode\u003e@​enter-a-new-username3\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/680\"\u003elexiforest/curl_cffi#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MFTabriz\"\u003e\u003ccode\u003e@​MFTabriz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/690\"\u003elexiforest/curl_cffi#690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wxpppp\"\u003e\u003ccode\u003e@​wxpppp\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/716\"\u003elexiforest/curl_cffi#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/p9s\"\u003e\u003ccode\u003e@​p9s\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/pull/655\"\u003elexiforest/curl_cffi#655\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/lexiforest/curl_cffi/compare/v0.14.0...v0.15.0\"\u003ehttps://github.com/lexiforest/curl_cffi/compare/v0.14.0...v0.15.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/0e219c43701f955436ef4a20486a7237a417dbc6\"\u003e\u003ccode\u003e0e219c4\u003c/code\u003e\u003c/a\u003e cli: add --http3-only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/21ca4f0e0fdc16401949dbd939c9e1c0973d6e85\"\u003e\u003ccode\u003e21ca4f0\u003c/code\u003e\u003c/a\u003e Optimize CLI output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/884fffd752c1ac1890f74eb87ef682b7a17f486a\"\u003e\u003ccode\u003e884fffd\u003c/code\u003e\u003c/a\u003e Bump version to 0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/754b43d76ce07db943d656524ee8c2432e99b74e\"\u003e\u003ccode\u003e754b43d\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/6e61a25d13edfe062554310913c1fd1c19b9e5af\"\u003e\u003ccode\u003e6e61a25\u003c/code\u003e\u003c/a\u003e Add support for READFUNCTION (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/698\"\u003e#698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/5eb13bc91f2a6f5014d163ea9c0b89a3b70c8cab\"\u003e\u003ccode\u003e5eb13bc\u003c/code\u003e\u003c/a\u003e fix Makefile issue (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/655\"\u003e#655\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/39c046c548a490c2f2fed8c9c82ed6a5ab39ad05\"\u003e\u003ccode\u003e39c046c\u003c/code\u003e\u003c/a\u003e Store request body (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/710\"\u003e#710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/06237c9172815071678c920afb75dfd1ab6db32a\"\u003e\u003ccode\u003e06237c9\u003c/code\u003e\u003c/a\u003e Expose http3 fingerprints customization (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/5686baf38d6d5128b80b83573158ee1241dff4da\"\u003e\u003ccode\u003e5686baf\u003c/code\u003e\u003c/a\u003e Add option to mitigate SSRF (\u003ca href=\"https://redirect.github.com/lexiforest/curl_cffi/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lexiforest/curl_cffi/commit/73b2b1694324a426ba8ddc61a602867d1d764552\"\u003e\u003ccode\u003e73b2b16\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lexiforest/curl_cffi/compare/v0.7.3...v0.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `camoufox` from 0.4.4 to 0.4.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/daijro/camoufox/releases\"\u003ecamoufox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHardware Spoofing\u003c/h2\u003e\n\u003cp\u003eThis release has not been tested yet. Please don't use unless you know what you are doing :)\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\u003eSee full diff in \u003ca href=\"https://github.com/daijro/camoufox/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `patchright` from 1.52.5 to 1.59.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/releases\"\u003epatchright's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.59.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.58.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.57.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.56.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\u003c/p\u003e\n\u003ch2\u003ev1.55.0\u003c/h2\u003e\n\u003cp\u003eThis is an automatic deployment in response to a new release of \u003ca href=\"https://github.com/microsoft/playwright-python\"\u003emicrosoft/playwright-python\u003c/a\u003e.\nThis Release is only used for Versioning.\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\u003eSee full diff in \u003ca href=\"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/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.10.0 to 2.13.3\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.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\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd zizmor for GitHub Actions workflow linting 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/13039\"\u003e#13039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate jiter to v0.14.0 to fix a segmentation fault on musl Linux 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/13064\"\u003e#13064\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/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.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.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release contains the updated \u003ccode\u003epydantic.v1\u003c/code\u003e namespace, matching version 1.10.26 which includes support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eSee the beta releases for all changes sinces 2.12.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow default factories of private attributes to take validated model data 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/13013\"\u003e#13013\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9e9a11132c980c4ec84ff6d2df06d4c1a55ca8f3\"\u003e\u003ccode\u003e9e9a111\u003c/code\u003e\u003c/a\u003e Fix backported test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1ec8c6aa0cae1c78409c6f31af738a24e16c7124\"\u003e\u003ccode\u003e1ec8c6a\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fb4f2044436e9fa4ff9745479ce263016a99c4d6\"\u003e\u003ccode\u003efb4f204\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ca3ddd1149bd3b14273922a29da174804496a055\"\u003e\u003ccode\u003eca3ddd1\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/000e823a3ab7545b0c6064fde34effdcd02044ab\"\u003e\u003ccode\u003e000e823\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d45d8be3ffb6dfc6d0c64da6980140c91ff841fb\"\u003e\u003ccode\u003ed45d8be\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/54aca609ce58e73dfe1c681d93432fbe3a4621da\"\u003e\u003ccode\u003e54aca60\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/46bf4fa648af3a1fbf4603a37f210e9d9c618357\"\u003e\u003ccode\u003e46bf4fa\u003c/code\u003e\u003c/a\u003e Fix Pydantic release workflow (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13067\"\u003e#13067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1b359edab09c623464d23c6fd2503ae5ff276d43\"\u003e\u003ccode\u003e1b359ed\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13065\"\u003e#13065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b1bf19445d8ac144a7a0e82674d2d87eebab6c18\"\u003e\u003ccode\u003eb1bf194\u003c/code\u003e\u003c/a\u003e Fix model equality when using runtime \u003ccode\u003eextra\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13062\"\u003e#13062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.10.0...v2.13.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-levenshtein` from 0.25.0 to 0.27.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/releases\"\u003epython-levenshtein's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 0.27.3\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.27.1\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix build with \u003ccode\u003escikit-build-core\u003c/code\u003e \u003ccode\u003ev0.11\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eupgrade to \u003ccode\u003eCython==3.0.12\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.26.1\u003c/h2\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing mac os wheels\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.26.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for Python 3.13\u003c/li\u003e\n\u003cli\u003edrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 0.25.1\u003c/h2\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix potentially incorrect results of \u003ccode\u003ejaro_winkler\u003c/code\u003e when using high prefix weights\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/rapidfuzz/python-Levenshtein/blob/main/HISTORY.md\"\u003epython-levenshtein's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ev0.27.3\u003c/h3\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.27.1\u003c/h3\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003efix build with \u003ccode\u003escikit-build-core\u003c/code\u003e \u003ccode\u003ev0.11\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eupgrade to \u003ccode\u003eCython==3.0.12\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.26.1\u003c/h3\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing mac os wheels\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.26.0\u003c/h3\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for Python 3.13\u003c/li\u003e\n\u003cli\u003edrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ev0.25.1\u003c/h3\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003efix potentially incorrect results of \u003ccode\u003ejaro_winkler\u003c/code\u003e when using high prefix weights\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/23fffc235b9290c3288ece63a9463d92b65fb17e\"\u003e\u003ccode\u003e23fffc2\u003c/code\u003e\u003c/a\u003e add support for python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/e46eaff43c00aac3e80266b1a6c503af97bcc817\"\u003e\u003ccode\u003ee46eaff\u003c/code\u003e\u003c/a\u003e use pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/3bbf7ec56df5c708977104827129767edebbd1f6\"\u003e\u003ccode\u003e3bbf7ec\u003c/code\u003e\u003c/a\u003e remove duplicated license information\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/ec1a77524a8c7277cbcd3162cf6deaabfbfd9a9c\"\u003e\u003ccode\u003eec1a775\u003c/code\u003e\u003c/a\u003e rename license file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/26cb183f4ef394af6c12817f09b3fbda33bb3499\"\u003e\u003ccode\u003e26cb183\u003c/code\u003e\u003c/a\u003e update to 0.27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/ff4cd4ea9b15c6d1c9ba79a2266fb7760879fc4c\"\u003e\u003ccode\u003eff4cd4e\u003c/code\u003e\u003c/a\u003e Update README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/3ba4bb30f8bda276e070e3416f6905d77ddde633\"\u003e\u003ccode\u003e3ba4bb3\u003c/code\u003e\u003c/a\u003e update installer version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/abd121defa4d40aa1d3d65b5d768067c5ac602ed\"\u003e\u003ccode\u003eabd121d\u003c/code\u003e\u003c/a\u003e update Levenshtein version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/commit/bb6eff3005f180853b13e86356e103368c92c3e6\"\u003e\u003ccode\u003ebb6eff3\u003c/code\u003e\u003c/a\u003e tag 0.25.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rapidfuzz/python-Levenshtein/compare/v0.25.0...v0.27.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tldextract` from 5.1.0 to 5.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/john-kurkowski/tldextract/releases\"\u003etldextract's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\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/bmos\"\u003e\u003ccode\u003e@​bmos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/pull/358\"\u003ejohn-kurkowski/tldextract#358\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elliotwutingfeng\"\u003e\u003ccode\u003e@​elliotwutingfeng\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\"\u003ehttps://github.com/john-kurkowski/tldextract/compare/5.3.0...5.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e5.3.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd result field \u003ccode\u003eregistry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eTo complement the existing public suffix field \u003ccode\u003esuffix\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_registry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003eregistered_domain\u003c/code\u003e property\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e instead, which has the same behavior\nbut a more accurate name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eFix missing \u003ccode\u003ereverse_domain_name\u003c/code\u003e property in CLI \u003ccode\u003e--json\u003c/code\u003e output (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/a545c67d87223616fc13e90692886b3ca9af18bb\"\u003e\u003ccode\u003ea545c67\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMisc.\n\u003cul\u003e\n\u003cli\u003eExpand internal \u003ccode\u003esuffix_index\u003c/code\u003e return type to be richer than bools, and\ninclude the registry suffix during trie traversal\n(\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski\"\u003e\u003ccode\u003e@​john-kurkowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/john-kurkowski/tldextract/compare/5.2.0...5.3.0\"\u003ehttps://github.com/john-kurkowski/tldextract/compare/5.2.0...5.3.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ereverse_domain_name\u003c/code\u003e result property (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eExtend exported public interface with \u003ccode\u003eExtractResult\u003c/code\u003e and \u003ccode\u003eupdate\u003c/code\u003e (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/36ff658c53b510c5d56f8af235c8b08ce3c512f5\"\u003e\u003ccode\u003e36ff658\u003c/code\u003e\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThese were always meant to be public. Eases user import.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eDocument result fields\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/john-kurkowski/tldextract/blob/master/CHANGELOG.md\"\u003etldextract's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1 (2025-12-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up IP address search space with \u003ccode\u003eisdecimal()\u003c/code\u003e instead of \u003ccode\u003eisdigit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/352\"\u003e#352\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eReorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.3.0 (2025-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd result field \u003ccode\u003eregistry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eTo complement the existing public suffix field \u003ccode\u003esuffix\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd result property \u003ccode\u003etop_domain_under_registry_suffix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate \u003ccode\u003eregistered_domain\u003c/code\u003e property\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003etop_domain_under_public_suffix\u003c/code\u003e instead, which has the same behavior\nbut a more accurate name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eFix missing \u003ccode\u003ereverse_domain_name\u003c/code\u003e property in CLI \u003ccode\u003e--json\u003c/code\u003e output (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/a545c67d87223616fc13e90692886b3ca9af18bb\"\u003e\u003ccode\u003ea545c67\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMisc.\n\u003cul\u003e\n\u003cli\u003eExpand internal \u003ccode\u003esuffix_index\u003c/code\u003e return type to be richer than bools, and\ninclude the registry suffix during trie traversal\n(\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/344\"\u003e#344\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.2.0 (2025-04-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFeatures\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ereverse_domain_name\u003c/code\u003e result property (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eExtend exported public interface with \u003ccode\u003eExtractResult\u003c/code\u003e and \u003ccode\u003eupdate\u003c/code\u003e (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/36ff658c53b510c5d56f8af235c8b08ce3c512f5\"\u003e\u003ccode\u003e36ff658\u003c/code\u003e\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThese were always meant to be public. Eases user import.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eDocument result fields\u003c/li\u003e\n\u003cli\u003eNote all return values\u003c/li\u003e\n\u003cli\u003eColocate usage in the usage section\u003c/li\u003e\n\u003cli\u003eLink to private domain docs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMisc.\n\u003cul\u003e\n\u003cli\u003eUpdate bundled snapshot\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.1.3 (2024-11-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBugfixes\n\u003cul\u003e\n\u003cli\u003eReduce logging errors (\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/921a82523c0e4403d21d50b2c3410d9af43520ac\"\u003e\u003ccode\u003e921a825\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/340\"\u003e#340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate bundled snapshot\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDocs\n\u003cul\u003e\n\u003cli\u003eClarify how to use your own definitions\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/john-kurkowski/tldextract/commit/361f12febf901ef48215d0380551d86c7f0608ac\"\u003e\u003ccode\u003e361f12f\u003c/code\u003e\u003c/a\u003e 5.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/34482ce70cb4ca7210d39fefb57b8b1ee34bc853\"\u003e\u003ccode\u003e34482ce\u003c/code\u003e\u003c/a\u003e Upgrade to newer setuptools-scm usage instructions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/b9a78148f1551c4f3c3d441c07cafd34207030cc\"\u003e\u003ccode\u003eb9a7814\u003c/code\u003e\u003c/a\u003e Fix license field deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/e397b6cdff10e89cbf66e758c8fcfa31ede2dabd\"\u003e\u003ccode\u003ee397b6c\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/77b10ba7fca31a827fc678dbff34897663f2f611\"\u003e\u003ccode\u003e77b10ba\u003c/code\u003e\u003c/a\u003e Support Python 3.14 + PyPy 3.11 (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/49c59d9f1ff9e25fce73ba8d9cde5274f7117c2b\"\u003e\u003ccode\u003e49c59d9\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Pin requests-file during typecheck\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/john-kurkowski/tldextract/commit/6e49ea583c85a80e82ae5554cd615e8ee305a026\"\u003e\u003ccode\u003e6e49ea5\u003c/code\u003e\u003c/a\u003e Reorganize, dedupe, and shorten README (\u003ca href=\"https://redirect.github.com/john-kurkowski/tldextract/issues...\n\n_Description has been truncated_","html_url":"https://github.com/PrajwalJahagirdar/hydrascraper/pull/63","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrajwalJahagirdar%2Fhydrascraper/issues/63","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/63/packages"}},{"old_version":"4.8.2","new_version":"4.14.2","update_type":"minor","path":"/apps/api","pr_created_at":"2026-04-20T06:33:13.000Z","version_change":"4.8.2 → 4.14.2","issue":{"uuid":"4293580585","node_id":"PR_kwDOR9avIM7T1yta","number":15,"state":"open","title":"chore(api)(deps): Bump the python-minor-and-patch group in /apps/api with 6 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T06:33:13.000Z","updated_at":"2026-04-20T06:33:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(api)(deps): Bump","group_name":"python-minor-and-patch","update_count":6,"packages":[{"name":"fastapi","old_version":"0.135.3","new_version":"0.136.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"alembic","old_version":"1.14.0","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"python-ulid","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/mdomke/python-ulid"},{"name":"prometheus-client","old_version":"0.21.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"testcontainers","old_version":"4.8.2","new_version":"4.14.2"}],"path":"/apps/api","ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group in /apps/api with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.136.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.14.0` | `1.18.4` |\n| [python-ulid](https://github.com/mdomke/python-ulid) | `3.0.0` | `3.1.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.1` | `0.25.0` |\n| [testcontainers[postgresql]](https://github.com/testcontainers/testcontainers-python) | `4.8.2` | `4.14.2` |\n\nUpdates `fastapi` from 0.135.3 to 0.136.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/708606c982cf35718cb2214c0bb9261cf548f042\"\u003e\u003ccode\u003e708606c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/13be6a3a0f12d3f36c286196ef555dd51dc09edb\"\u003e\u003ccode\u003e13be6a3\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b264878d71b2dc0e9e0f90ef15459d4302a7f9c\"\u003e\u003ccode\u003e4b26487\u003c/code\u003e\u003c/a\u003e ⬆️ Support free-threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15149\"\u003e#15149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f796c346a8537876de43729ff1ca1409d4648893\"\u003e\u003ccode\u003ef796c34\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/09d1d1cb7073b3c7bd1f58fcf6faefa9b2c29de4\"\u003e\u003ccode\u003e09d1d1c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae4e45c5cc20a1e1503fbcab2369821d188feb09\"\u003e\u003ccode\u003eae4e45c\u003c/code\u003e\u003c/a\u003e 🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15363\"\u003e#15363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9653034b8d459607a4b7f761e6c23a6f287fa5fa\"\u003e\u003ccode\u003e9653034\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f9a102faf071dbfa812a3af88d7d309d2ded4a6\"\u003e\u003ccode\u003e6f9a102\u003c/code\u003e\u003c/a\u003e ⬆ Bump cryptography from 46.0.5 to 46.0.7 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15314\"\u003e#15314\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/eba8942c81dbf990d25fbae34e6601bdbc21e74b\"\u003e\u003ccode\u003eeba8942\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/77d080caf850b8af5c0f467389edf03c057c7697\"\u003e\u003ccode\u003e77d080c\u003c/code\u003e\u003c/a\u003e ⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15309\"\u003e#15309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.3...0.136.0\"\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 `alembic` from 1.14.0 to 1.18.4\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.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.18.3\u003c/h1\u003e\n\u003cp\u003eReleased: January 29, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [autogenerate]\u003c/strong\u003e Fixed regression in version 1.18.0 due to \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e where autogenerate\nwould raise \u003ccode\u003eNoReferencedTableError\u003c/code\u003e when a foreign key constraint\nreferenced a table that was not part of the initial table load, including\ntables filtered out by the\n\u003ccode\u003eEnvironmentContext.configure.include_name\u003c/code\u003e callable or tables\nin remote schemas that were not included in the initial reflection run.\u003c/p\u003e\n\u003cp\u003eThe change in \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e was a performance optimization that eliminated\nadditional reflection queries for tables that were only referenced by\nforeign keys but not explicitly included in the main reflection run.\nHowever, this optimization inadvertently removed the creation of\n\u003ccode\u003eTable\u003c/code\u003e objects for these referenced tables, causing autogenerate\nto fail when processing foreign key constraints that pointed to them.\u003c/p\u003e\n\u003cp\u003eThe fix creates placeholder \u003ccode\u003eTable\u003c/code\u003e objects for foreign key targets\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 `python-ulid` from 3.0.0 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mdomke/python-ulid/releases\"\u003epython-ulid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Python 3.13 to the trove classifiers.\u003c/li\u003e\n\u003cli\u003eOptimze \u003ccode\u003e@property\u003c/code\u003e to \u003ccode\u003e@cached_property\u003c/code\u003e \u003ca href=\"https://github.com/WH-2099\"\u003e\u003ccode\u003e@​WH-2099\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen generating ULIDs within the same millisecond, the library will ensure monotonic sort order by incrementing the randomness component by 1 bit. This process is described in the \u003ca href=\"https://github.com/ulid/spec/blob/master/README.md#monotonicity\"\u003espec\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSharpen regular expression for Pydantic \u003ca href=\"https://github.com/aplhk\"\u003e\u003ccode\u003e@​aplhk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix Sphinx warnings when referencing ULID from an external project. \u003ca href=\"https://github.com/BoboTiG\"\u003e\u003ccode\u003e@​BoboTiG\u003c/code\u003e\u003c/a\u003e .\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mdomke/python-ulid/blob/main/CHANGELOG.rst\"\u003epython-ulid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e3.1.0\u003c/code\u003e_ - 2025-08-18\u003c/h2\u003e\n\u003cp\u003eChanged\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e* Added Python 3.13 to the trove classifiers.\n* Optimze ``@property`` to ``@cached_property`` `@WH-2099 \u0026lt;https://github.com/WH-2099\u0026gt;`_.\n* When generating ULIDs within the same millisecond, the library will ensure monotonic sort order by\n  incrementing the randomness component by 1 bit. This process is descrbied in the\n  `spec \u0026lt;https://github.com/ulid/spec/blob/master/README.md#monotonicity\u0026gt;`_.\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e* Sharpen regular expression for Pydantic `@aplhk \u0026amp;lt;https://github.com/aplhk\u0026amp;gt;`_.\n* Fix Sphinx warnings when referencing ULID from an external project. `@BoboTiG \u0026amp;lt;https://github.com/BoboTiG\u0026amp;gt;`_.\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/12277593be322123b2f6ff39fbe329a3eb0b7c15\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1227759\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; chore: Always specify byteorder for Python 3.9\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/14683ee0df6e4a2966ceb32d3497bc5d3a9d7079\u0026quot;\u0026gt;\u0026lt;code\u0026gt;14683ee\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Implement same ms monotonic sort order\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/51b4ab8dace5661a1689f4bcaaefbc529d0c4632\u0026quot;\u0026gt;\u0026lt;code\u0026gt;51b4ab8\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; chore: Add changelog for 3.1.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/c36c65f7730422591f6302a60d6a00324c7ba9a2\u0026quot;\u0026gt;\u0026lt;code\u0026gt;c36c65f\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Improve Sphinx interdoc\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/dfc3b9cee46518514d44fb34fd5d36d6f414b965\u0026quot;\u0026gt;\u0026lt;code\u0026gt;dfc3b9c\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Fix sphinx warnings (\u0026lt;a href=\u0026quot;https://redirect.github.com/mdomke/python-ulid/issues/35\u0026quot;\u0026gt;#35\u0026lt;/a\u0026gt;)\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/59cd43d0d5aa3a8bf509f8da516d0c27597d020b\u0026quot;\u0026gt;\u0026lt;code\u0026gt;59cd43d\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Add uv and freezegun dependencies\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/9e56decb2b16ec8d6ebaccdc200de264e69f96e3\u0026quot;\u0026gt;\u0026lt;code\u0026gt;9e56dec\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Optimize regex pattern\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/9b3168bed2938e7de4a4d4565aec62a3eab7f5c5\u0026quot;\u0026gt;\u0026lt;code\u0026gt;9b3168b\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Update tooling, type checking and linting\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/929ef8ac34ef953c980490dd875b3100fc4351aa\u0026quot;\u0026gt;\u0026lt;code\u0026gt;929ef8a\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Move dev dependences into pyproject.toml\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/commit/a1434e82a854f1796ba4ad5da5a095789038f506\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a1434e8\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; optimize property to cached_property (\u0026lt;a href=\u0026quot;https://redirect.github.com/mdomke/python-ulid/issues/37\u0026quot;\u0026gt;#37\u0026lt;/a\u0026gt;)\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Additional commits viewable in \u0026lt;a href=\u0026quot;https://github.com/mdomke/python-ulid/compare/3.0.0...3.1.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `prometheus-client` from 0.21.1 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix spaces in grouping key values for push_to_gateway by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1156\"\u003eprometheus/client_python#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport MultiProcessCollector in RestrictedRegistry by \u003ca href=\"https://github.com/mathias-kende\"\u003e\u003ccode\u003e@​mathias-kende\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1150\"\u003eprometheus/client_python#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.24.1...v0.25.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.24.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Django] Pass correct registry to MultiProcessCollector by \u003ca href=\"https://github.com/jelly\"\u003e\u003ccode\u003e@​jelly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1152\"\u003eprometheus/client_python#1152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.24.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an AIOHTTP exporter by \u003ca href=\"https://github.com/Lexicality\"\u003e\u003ccode\u003e@​Lexicality\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1139\"\u003eprometheus/client_python#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd remove_matching() method for metric label deletion by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1121\"\u003eprometheus/client_python#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(multiprocess): avoid double-building child metric names (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1035\"\u003e#1035\u003c/a\u003e) by \u003ca href=\"https://github.com/hazel-shen\"\u003e\u003ccode\u003e@​hazel-shen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1146\"\u003eprometheus/client_python#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't interleave histogram metrics in multi-process collector by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1148\"\u003eprometheus/client_python#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax registry type annotations for exposition by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1149\"\u003eprometheus/client_python#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded compression support in pushgateway by \u003ca href=\"https://github.com/ritesh-avesha\"\u003e\u003ccode\u003e@​ritesh-avesha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1144\"\u003eprometheus/client_python#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) by \u003ca href=\"https://github.com/Chadys\"\u003e\u003ccode\u003e@​Chadys\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1143\"\u003eprometheus/client_python#1143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use tuples instead of packaging Version by \u003ca href=\"https://github.com/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\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/efiop\"\u003e\u003ccode\u003e@​efiop\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1136\"\u003eprometheus/client_python#1136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\"\u003ehttps://github.com/prometheus/client_python/compare/v0.23.0...v0.23.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUTF-8 Content Negotiation by \u003ca href=\"https://github.com/ywwg\"\u003e\u003ccode\u003e@​ywwg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1102\"\u003eprometheus/client_python#1102\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe include test data by \u003ca href=\"https://github.com/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove parser performance by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1117\"\u003eprometheus/client_python#1117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support to \u003ccode\u003ewrite_to_textfile\u003c/code\u003e for custom tmpdir by \u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOM text exposition for NH by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1087\"\u003eprometheus/client_python#1087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug which caused metric publishing to not accept query string parameters in ASGI app by \u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit native histograms only when OM 2.0.0 is requested by \u003ca href=\"https://github.com/vesari\"\u003e\u003ccode\u003e@​vesari\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1128\"\u003eprometheus/client_python#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove space after comma in openmetrics exposition by \u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix issue parsing double spaces after # HELP/# TYPE by \u003ca href=\"https://github.com/csmarchbanks\"\u003e\u003ccode\u003e@​csmarchbanks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1134\"\u003eprometheus/client_python#1134\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/mgorny\"\u003e\u003ccode\u003e@​mgorny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1113\"\u003eprometheus/client_python#1113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aadityadhruv\"\u003e\u003ccode\u003e@​aadityadhruv\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1115\"\u003eprometheus/client_python#1115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hacksparr0w\"\u003e\u003ccode\u003e@​hacksparr0w\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1125\"\u003eprometheus/client_python#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theSuess\"\u003e\u003ccode\u003e@​theSuess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/prometheus/client_python/pull/1132\"\u003eprometheus/client_python#1132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\"\u003ehttps://github.com/prometheus/client_python/compare/v0.22.1...v0.23.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/2cd1738fb880fd0e6aa9a02ec48585128388a6cd\"\u003e\u003ccode\u003e2cd1738\u003c/code\u003e\u003c/a\u003e Release 0.25.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/daa1626eaf705318013b708954499b0a049088c8\"\u003e\u003ccode\u003edaa1626\u003c/code\u003e\u003c/a\u003e docs: add API reference for all metric types  (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1159\"\u003e#1159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/8673912276bdca7ddbca5d163eb11422b546bffb\"\u003e\u003ccode\u003e8673912\u003c/code\u003e\u003c/a\u003e Support MultiProcessCollector in RestrictedRegistry. (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1150\"\u003e#1150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/671f75c6f1f04838995fadd57cda21beee01838b\"\u003e\u003ccode\u003e671f75c\u003c/code\u003e\u003c/a\u003e Fix spaces in grouping key values for push_to_gateway (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1156\"\u003e#1156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/1cf53feae63b6ecb0bd76eee80582a0fba957e09\"\u003e\u003ccode\u003e1cf53fe\u003c/code\u003e\u003c/a\u003e Fix server shutdown documentation (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/a8541354519d04852d24688845f1d2d495eef59c\"\u003e\u003ccode\u003ea854135\u003c/code\u003e\u003c/a\u003e Migrate to Github Actions (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1153\"\u003e#1153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/f417f6ea8f058165a1934e368fed245e91aafc14\"\u003e\u003ccode\u003ef417f6e\u003c/code\u003e\u003c/a\u003e Release 0.24.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/6f0e967c1f7a408b75861d6833a8d303874be95d\"\u003e\u003ccode\u003e6f0e967\u003c/code\u003e\u003c/a\u003e Pass correct registry to MultiProcessCollector (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/c5024d310fbfcba45a5e9db62e337a3a7930ea16\"\u003e\u003ccode\u003ec5024d3\u003c/code\u003e\u003c/a\u003e Release 0.24.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e1cdc203b1cf5f15c7b9a64d79fccc7907a62ca3\"\u003e\u003ccode\u003ee1cdc20\u003c/code\u003e\u003c/a\u003e Add Django exporter (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1088\"\u003e#1088\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1143\"\u003e#1143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.21.1...v0.25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers[postgresql]` from 4.8.2 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers[postgresql]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003epython 3.14 is now supported!\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.2\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers[postgresql]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.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/gofrolist/project-800ms/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gofrolist%2Fproject-800ms/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":null,"pr_created_at":"2026-04-19T07:14:29.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4290196962","node_id":"PR_kwDOH5nOwc7TrsfW","number":241,"state":"closed","title":"Bump the uv-version group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-26T07:13:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-19T07:14:29.000Z","updated_at":"2026-04-26T07:13:46.000Z","time_to_close":604755,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-version","update_count":7,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"google-api-python-client","old_version":"2.191.0","new_version":"2.193.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-cloud-secret-manager","old_version":"2.26.0","new_version":"2.27.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"confluent-kafka","old_version":"2.13.2","new_version":"2.14.0","repository_url":"https://github.com/confluentinc/confluent-kafka-python"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-version group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.191.0` | `2.193.0` |\n| [google-cloud-secret-manager](https://github.com/googleapis/google-cloud-python) | `2.26.0` | `2.27.0` |\n| [confluent-kafka](https://github.com/confluentinc/confluent-kafka-python) | `2.13.2` | `2.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.9` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-api-python-client` from 2.191.0 to 2.193.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-api-python-client/releases\"\u003egoogle-api-python-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.193.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.192.0...v2.193.0\"\u003e2.193.0\u003c/a\u003e (2026-03-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5577adf2b4a615e185fc5f46b3255588165ca97b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5577adf2b4a615e185fc5f46b3255588165ca97b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/10d33297c93d17b03479d8ccd521167f6c2c2734\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/10d33297c93d17b03479d8ccd521167f6c2c2734\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f4eee62a0eb42e6b82648abd8aa10dfb1aa37d16\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f4eee62a0eb42e6b82648abd8aa10dfb1aa37d16\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealloydb:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e630a6a26516459182d2417c97bcdfdf6162f25e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e630a6a26516459182d2417c97bcdfdf6162f25e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eanalyticshub:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0ae6b5ef1979366181fa6c2518767769c45be897\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0ae6b5ef1979366181fa6c2518767769c45be897\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eandroidmanagement:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0da0a8095c028689210816c4ee41327c2375cb7b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0da0a8095c028689210816c4ee41327c2375cb7b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eandroidpublisher:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3bcae30e9a5b4ab190b71118301ba987f57b39c7\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3bcae30e9a5b4ab190b71118301ba987f57b39c7\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapihub:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d5853837b735d4094892f84433d95bd11b451fa8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d5853837b735d4094892f84433d95bd11b451fa8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bc6831124067abf3c765c1d17a1eef1e40999e2c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bc6831124067abf3c765c1d17a1eef1e40999e2c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/df7e53eccd94a3772b9cfc091971d7b8d01b94e9\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/df7e53eccd94a3772b9cfc091971d7b8d01b94e9\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebeyondcorp:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d4731d803581e75f1e83427a566487ead2ee432a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d4731d803581e75f1e83427a566487ead2ee432a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigqueryreservation:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3132d9257677c88bda0e5122b78f7bc6671c73cf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3132d9257677c88bda0e5122b78f7bc6671c73cf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a2ecc21536965effba0c9190c43f01f29eb8588f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a2ecc21536965effba0c9190c43f01f29eb8588f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecalendar:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8854dfe2d738d0aa03fb5c2827ebc2371a5b5af8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8854dfe2d738d0aa03fb5c2827ebc2371a5b5af8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2dc2ec0afd7236cb60e543ad96bebdbb69cd36e9\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2dc2ec0afd7236cb60e543ad96bebdbb69cd36e9\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/782936c6baae3d3c5288079e11503f851c4634f3\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/782936c6baae3d3c5288079e11503f851c4634f3\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclassroom:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/cffc11aaf58752e163fc930a4279b820ffe93daf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/cffc11aaf58752e163fc930a4279b820ffe93daf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbuild:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a4d5055d1829938f95c5b6455771b3b39fd86f98\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a4d5055d1829938f95c5b6455771b3b39fd86f98\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudidentity:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5eefc0e054eb1923754ef247815a90bf5855fe69\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5eefc0e054eb1923754ef247815a90bf5855fe69\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/166ea8146c4387cb03395ccba85c64970dab52de\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/166ea8146c4387cb03395ccba85c64970dab52de\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f18dffb3fabc828fe4134eb63ba2bc253951f44e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f18dffb3fabc828fe4134eb63ba2bc253951f44e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtactcenterinsights:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/ee644fcb3f92cb82a843ae5d3e9a5949dbeece16\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/ee644fcb3f92cb82a843ae5d3e9a5949dbeece16\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecss:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e7ad7419e23ac8bee818329be25ad8e0cef4e387\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e7ad7419e23ac8bee818329be25ad8e0cef4e387\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatalineage:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8abec73202e20ecc92dc34be35d0ee60d0a4592a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8abec73202e20ecc92dc34be35d0ee60d0a4592a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatamigration:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/67f740990a1cd40801a08f04278d245ab6fb87eb\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/67f740990a1cd40801a08f04278d245ab6fb87eb\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3834f263bb60bccd631e98b4faeac6ab1e61e762\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3834f263bb60bccd631e98b4faeac6ab1e61e762\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bda576f8d92d530bb09f1f73bfe04e1f53dc8a82\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bda576f8d92d530bb09f1f73bfe04e1f53dc8a82\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ediscoveryengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bf7598a36a8138c5a7ca58b8a0ac0e898d2d0955\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bf7598a36a8138c5a7ca58b8a0ac0e898d2d0955\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ediscoveryengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e51e83aa00e8cae6ad874e422b675fe0ca15c451\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e51e83aa00e8cae6ad874e422b675fe0ca15c451\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edisplayvideo:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6346814a18e61174f5e72a0619f9ef66cdd5d9d7\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6346814a18e61174f5e72a0619f9ef66cdd5d9d7\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edisplayvideo:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/866970307aa9d78289a92524e7159bdb68562d98\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/866970307aa9d78289a92524e7159bdb68562d98\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edlp:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/bb33094680a85e7f05dad9c1dbd718e40045befd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/bb33094680a85e7f05dad9c1dbd718e40045befd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edrive:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b538e2ec1463b95f01fb3fad110b521085b92ea4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b538e2ec1463b95f01fb3fad110b521085b92ea4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efcm:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/242ee76b2de143a24959021e6a3a75685a878aec\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/242ee76b2de143a24959021e6a3a75685a878aec\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efirebasedataconnect:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a7e36973a0f7720d52007c9b472d1cbc5145ec00\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a7e36973a0f7720d52007c9b472d1cbc5145ec00\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efirebaseml:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/735210e8c68f34c049ff629b7933943ded972647\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/735210e8c68f34c049ff629b7933943ded972647\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efirestore:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/276f7b50506e5cc5223ada3ca289a9f1590a95bf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/276f7b50506e5cc5223ada3ca289a9f1590a95bf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eiam:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/44b794c39ef2e2f9b16fbcdb6bb78dc20477db42\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/44b794c39ef2e2f9b16fbcdb6bb78dc20477db42\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emerchantapi:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3c5b82060080e05ef87b14f20dcd1816f03f1f79\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3c5b82060080e05ef87b14f20dcd1816f03f1f79\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emigrationcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/54b06e5eceeb875513d96efd0d650f13ab938040\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/54b06e5eceeb875513d96efd0d650f13ab938040\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emonitoring:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8f80001d00540f5121a706e3785df16d29d36b8f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8f80001d00540f5121a706e3785df16d29d36b8f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enetworkconnectivity:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8371670da6d9d37f44120ba7c7f8e8b7a7146036\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8371670da6d9d37f44120ba7c7f8e8b7a7146036\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003ea7eaabb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enetworkmanagement:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/701b49119b61553bbd62b56f026f6dcd245b2e3d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/701b49119b61553bbd62b56f026f6dcd245b2e3d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enetworksecurity:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3a45a9c38802f2100467f60a33ad222537b46167\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3a45a9c38802f2100467f60a33ad222537b46167\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e3f48f2b\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/googleapis/google-api-python-client/commit/00266153237185a9de250645f7dcc082b9189ce1\"\u003e\u003ccode\u003e0026615\u003c/code\u003e\u003c/a\u003e chore(main): release 2.193.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2728\"\u003e#2728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a7eaabb836b96ff603d13e5fa14c938ad2c26266\"\u003e\u003ccode\u003ea7eaabb\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2729\"\u003e#2729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/3f48f2b1fca0e3de30c80af9e6510d1571bcb555\"\u003e\u003ccode\u003e3f48f2b\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2727\"\u003e#2727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/22028738645b236f967a47000b57dd823e722c12\"\u003e\u003ccode\u003e2202873\u003c/code\u003e\u003c/a\u003e chore(main): release 2.192.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2726\"\u003e#2726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/45a338522e6c484029833b3bcf7fe73c58648e55\"\u003e\u003ccode\u003e45a3385\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2725\"\u003e#2725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.191.0...v2.193.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-secret-manager` from 2.26.0 to 2.27.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-secret-manager's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-firestore: v2.27.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-firestore-v2.26.0...google-cloud-firestore-v2.27.0\"\u003ev2.27.0\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-secret-manager's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v2.26.0...google-cloud-documentai-v2.27.0\"\u003e2.27.0\u003c/a\u003e (2024-04-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Chunk header and footer in Doc AI external proto (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep the API doc up-to-date with recent changes (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2615bd39fd3880cba0314e0fcc732ff24e4f0c9d\"\u003e2615bd3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f19d85b8083b57c2e60b8cd257d3e1f419e7eed\"\u003e\u003ccode\u003e0f19d85\u003c/code\u003e\u003c/a\u003e chore: fix missing heading in changelog (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16189\"\u003e#16189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a16755d8e2fcd941e94cc967a5acd72c95eb7644\"\u003e\u003ccode\u003ea16755d\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T111101Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9694ce943e2b7f4729b78e80b25a6729bfb292ca\"\u003e\u003ccode\u003e9694ce9\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T114549Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c4a35cf59cc2d82243fdd6e2bd5cab981f3a1467\"\u003e\u003ccode\u003ec4a35cf\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T132735Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16146\"\u003e#16146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/640a86b3ba70b191984c3edaded68ddbe5e540d8\"\u003e\u003ccode\u003e640a86b\u003c/code\u003e\u003c/a\u003e chore: librarian update image pull request: 20260325T221325Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16175\"\u003e#16175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/341284c80e2f09149467541767499f30b369df55\"\u003e\u003ccode\u003e341284c\u003c/code\u003e\u003c/a\u003e chore(deps): bump pyasn1 from 0.6.1 to 0.6.3 in /packages/sqlalchemy-spanner ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ec9262c45055d3d2b596cdde1649d3ce90b4347d\"\u003e\u003ccode\u003eec9262c\u003c/code\u003e\u003c/a\u003e fix: Allow Protobuf 7.x, require Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16102\"\u003e#16102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/cf50cea185f2ad4763a14f1f0c14ca50fc2fe418\"\u003e\u003ccode\u003ecf50cea\u003c/code\u003e\u003c/a\u003e feat(firestore): literals pipeline stage (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16028\"\u003e#16028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4b400faca2fcd40f68a812dc6f47a79d0cbf7433\"\u003e\u003ccode\u003e4b400fa\u003c/code\u003e\u003c/a\u003e chore: librarian generate pull request: 20260325T142358Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16166\"\u003e#16166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-secret-manager-v2.26.0...google-cloud-secret-manager-v2.27.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `confluent-kafka` from 2.13.2 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/releases\"\u003econfluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/blob/master/CHANGELOG.md\"\u003econfluent-kafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 - 2026-04-01\u003c/h2\u003e\n\u003cp\u003ev2.14.0 is a feature release with the following features, fixes and enhancements:\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement async context manager protocol for AIOProducer and AIOConsumer (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure normalize.schemas config is passed during Protobuf ref lookup \u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2214\"\u003e#2214\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type annotations for context manager hooks so that they are correct for subclasses (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix OAuth callback handling for Async IO clients to prevent initialization failures (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003econfluent-kafka-python v2.14.0 is based on librdkafka v2.14.0, see the\n\u003ca href=\"https://github.com/confluentinc/librdkafka/releases/tag/v2.14.0\"\u003elibrdkafka release notes\u003c/a\u003e\nfor a complete list of changes, enhancements, fixes and upgrade considerations.\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/confluentinc/confluent-kafka-python/commit/a2f066da6bbf28d3285b1c6b4764ad68967aac55\"\u003e\u003ccode\u003ea2f066d\u003c/code\u003e\u003c/a\u003e v2.14.0 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d80ff360bfc01690c5c59d24ff1f3fdfa4505867\"\u003e\u003ccode\u003ed80ff36\u003c/code\u003e\u003c/a\u003e Add current release candidate to setup_all_versions.py (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/ea948daf03c959984459dd5b2971ca270078a270\"\u003e\u003ccode\u003eea948da\u003c/code\u003e\u003c/a\u003e v2.14.0rc1 (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2224\"\u003e#2224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/73c7953fbc0fbb80af6335078500d9b7cfcc8296\"\u003e\u003ccode\u003e73c7953\u003c/code\u003e\u003c/a\u003e Avoid redundant lookup_schema call in _get_reader_schema when use_schema_id i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/410a59c8ca81fdf06fbc38dc2b86947e15dcb8da\"\u003e\u003ccode\u003e410a59c\u003c/code\u003e\u003c/a\u003e Add enableAt to RuleSet (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2218\"\u003e#2218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/f3af6aa5a65aa7754b919d988f30d48dbce96f36\"\u003e\u003ccode\u003ef3af6aa\u003c/code\u003e\u003c/a\u003e Remove callback wrapping for oauth_cb in AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2219\"\u003e#2219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/d313cac869b3e0f6810a7b1e1127f436115199f6\"\u003e\u003ccode\u003ed313cac\u003c/code\u003e\u003c/a\u003e Fix return type signature for context managers (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/40e8a6fa9db68405cbed31c877d4e92ffe25aaf2\"\u003e\u003ccode\u003e40e8a6f\u003c/code\u003e\u003c/a\u003e Implement async context manager protocol for AIO clients (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/0ed043f459b0b6e557d53111ea1afccee265378f\"\u003e\u003ccode\u003e0ed043f\u003c/code\u003e\u003c/a\u003e Fix typo (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/1691\"\u003e#1691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/commit/cc164a1cf0c6f5bb285130fd0448acdcb0051f92\"\u003e\u003ccode\u003ecc164a1\u003c/code\u003e\u003c/a\u003e DGS-23025 Add AssociatedNameStrategy (\u003ca href=\"https://redirect.github.com/confluentinc/confluent-kafka-python/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/confluentinc/confluent-kafka-python/compare/v2.13.2...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.4 to 0.15.9\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.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zsol\"\u003e\u003ccode\u003e@​zsol\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-02.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Flag annotated variable redeclarations as \u003ccode\u003eF811\u003c/code\u003e in preview mode (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24244\"\u003e#24244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Allow dunder-named assignments in non-strict mode for \u003ccode\u003eRUF067\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24089\"\u003e#24089\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-errmsg\u003c/code\u003e] Avoid shadowing existing \u003ccode\u003emsg\u003c/code\u003e in fix for \u003ccode\u003eEM101\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24363\"\u003e#24363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Ignore pre-initialization references in \u003ccode\u003eSIM113\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24235\"\u003e#24235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Fix \u003ccode\u003eW391\u003c/code\u003e fixes for consecutive empty notebook cells (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24236\"\u003e#24236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e nested class matching (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24273\"\u003e#24273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF072\u003c/code\u003e: skip formfeeds on dedent (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24308\"\u003e#24308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid re-using symbol in \u003ccode\u003eRUF024\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24316\"\u003e#24316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Parenthesize expression in \u003ccode\u003eRUF050\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24234\"\u003e#24234\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Suppress \u003ccode\u003eSIM105\u003c/code\u003e for \u003ccode\u003eexcept*\u003c/code\u003e before Python 3.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23869\"\u003e#23869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Extend \u003ccode\u003eF507\u003c/code\u003e to flag \u003ccode\u003e%\u003c/code\u003e-format strings with zero placeholders (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24215\"\u003e#24215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] \u003ccode\u003eUP018\u003c/code\u003e should detect more unnecessarily wrapped literals (UP018) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24093\"\u003e#24093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Fix \u003ccode\u003eUP008\u003c/code\u003e callable scope handling to support lambdas (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24274\"\u003e#24274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] \u003ccode\u003eRUF010\u003c/code\u003e: Mark fix as unsafe when it deletes a comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24270\"\u003e#24270\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003enested-string-quote-style\u003c/code\u003e formatting option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24312\"\u003e#24312\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Clarify RUF071 fix safety for non-path string comparisons (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24149\"\u003e#24149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Clarify import cycle wording for \u003ccode\u003eTC001\u003c/code\u003e/\u003ccode\u003eTC002\u003c/code\u003e/\u003ccode\u003eTC003\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24322\"\u003e#24322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid rendering fix lines with trailing whitespace after \u003ccode\u003e|\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24343\"\u003e#24343\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/tranhoangtu-it\"\u003e\u003ccode\u003e@​tranhoangtu-it\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zsol\"\u003e\u003ccode\u003e@​zsol\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/724ccc1ae8a61e872cf58435f2c073189dc248f2\"\u003e\u003ccode\u003e724ccc1\u003c/code\u003e\u003c/a\u003e Bump 0.15.9 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24369\"\u003e#24369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/96d9e0964cb87498ef15510ea7f896ba336659f9\"\u003e\u003ccode\u003e96d9e09\u003c/code\u003e\u003c/a\u003e [ty] Move the \u003ccode\u003edeferred\u003c/code\u003e submodule inside \u003ccode\u003einfer/builder\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24368\"\u003e#24368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/130da28d610a466721bb942e8a5e0ec47bbe3469\"\u003e\u003ccode\u003e130da28\u003c/code\u003e\u003c/a\u003e [ty] Infer the \u003ccode\u003eextra_items\u003c/code\u003e keyword argument to class-based TypedDicts as an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a617c54b0708a8c1eb850cc3b2a5caee21137a28\"\u003e\u003ccode\u003ea617c54\u003c/code\u003e\u003c/a\u003e [ty] Validate type qualifiers in functional TypedDict fields and the `extra_i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8517087c6cd0aa4f33dcede605ff642941dd74b\"\u003e\u003ccode\u003ed851708\u003c/code\u003e\u003c/a\u003e [ty] Improve robustness of various type-qualifier-related checks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24251\"\u003e#24251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aecb5877c6d6fe035c03aba994ec3a7b935b8f02\"\u003e\u003ccode\u003eaecb587\u003c/code\u003e\u003c/a\u003e Only run the release-gate on workflow dispatch (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24366\"\u003e#24366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b88957174311030927bf564da32d05dee0eb89d9\"\u003e\u003ccode\u003eb889571\u003c/code\u003e\u003c/a\u003e [ty] Use \u003ccode\u003einfer_type_expression\u003c/code\u003e for parsing parameter annotations and return...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3286a62be986a8d6d04d95b3bc619f06e012fa2f\"\u003e\u003ccode\u003e3286a62\u003c/code\u003e\u003c/a\u003e Add a \u0026quot;release-gate\u0026quot; step to the release workflow (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24365\"\u003e#24365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5f88756ee10e3faf0e96c883c34c95fc78200536\"\u003e\u003ccode\u003e5f88756\u003c/code\u003e\u003c/a\u003e Disallow starred expressions as values of starred expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24280\"\u003e#24280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5c59f8a46965cac3470f09972196c8620faa4626\"\u003e\u003ccode\u003e5c59f8a\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epyupgrade\u003c/code\u003e] Ignore strings with string-only escapes (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/16058\"\u003e#16058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/navikt/dvh-airflow-kafka/pull/241","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/navikt%2Fdvh-airflow-kafka/issues/241","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/241/packages"}},{"old_version":"\u003e=4.0","new_version":"\u003e=4.14.2","update_type":null,"path":null,"pr_created_at":"2026-04-13T11:25:51.000Z","version_change":"\u003e=4.0 → \u003e=4.14.2","issue":{"uuid":"4254110274","node_id":"PR_kwDOQfXFOM7R9cPR","number":102,"state":"open","title":"deps(py): update testcontainers requirement from \u003e=4.0 to \u003e=4.14.2","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-13T11:25:51.000Z","updated_at":"2026-04-13T11:33:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(py): update","packages":[{"name":"testcontainers","old_version":"\u003e=4.0","new_version":"\u003e=4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [testcontainers](https://github.com/testcontainers/testcontainers-python) 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.0.0...testcontainers-v4.14.2\"\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/lifeodyssey/Seichijunrei-agent/pull/102","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifeodyssey%2FSeichijunrei-agent/issues/102","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/102/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":null,"pr_created_at":"2026-04-10T02:46:35.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4236191154","node_id":"PR_kwDORKTFzM7RUY7z","number":57,"state":"open","title":"chore: Bump the all-python group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-10T02:46:35.000Z","updated_at":"2026-04-10T02:49:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","group_name":"all-python","update_count":7,"packages":[{"name":"fastmcp","old_version":"2.14.5","new_version":"3.1.0","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"neo4j","old_version":"6.0.3","new_version":"6.1.0","repository_url":"https://github.com/neo4j/neo4j-python-driver"},{"name":"redis","old_version":"7.1.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-python group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `2.14.5` | `3.1.0` |\n| [neo4j](https://github.com/neo4j/neo4j-python-driver) | `6.0.3` | `6.1.0` |\n| [redis](https://github.com/redis/redis-py) | `7.1.0` | `7.4.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `fastmcp` from 2.14.5 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0: Code to Joy\u003c/h2\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch2\u003eCode Mode\u003c/h2\u003e\n\u003cp\u003eStandard MCP has two scaling problems. The entire tool catalog loads into context upfront — with a large server, that's tens of thousands of tokens before the LLM reads a single word of the user's request. And every tool call is a round-trip: the LLM calls a tool, the result flows back through the context window, the LLM reasons about it, calls another tool, and so on. Intermediate results that only exist to feed the next step still burn tokens every time.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eCodeMode\u003c/code\u003e is an experimental transform that solves both. Instead of seeing your tool catalog directly, the LLM gets meta-tools: it searches for relevant tools on demand (using BM25), inspects their schemas, then writes Python that chains \u003ccode\u003ecall_tool()\u003c/code\u003e calls in a sandbox and returns a final answer. Discovery is staged and targeted; intermediate results never touch the model's context window.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom fastmcp import FastMCP\r\nfrom fastmcp.experimental.transforms.code_mode import CodeMode\r\n\u003cp\u003emcp = FastMCP(\u0026quot;Server\u0026quot;, transforms=[CodeMode()])\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYour existing tools don't change — \u003ccode\u003eCodeMode\u003c/code\u003e wraps them. The default three-stage flow (search → get schemas → execute) is configurable: collapse it to two stages for smaller catalogs, skip discovery entirely for tiny ones. The sandbox supports resource limits on time, memory, and recursion depth.\u003c/p\u003e\n\u003cp\u003eRead the docs \u003ca href=\"https://gofastmcp.com/servers/transforms/code-mode\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eSearch Transforms\u003c/h2\u003e\n\u003cp\u003eCode Mode's discovery layer is also available as a standalone transform. \u003ccode\u003eSearchTools\u003c/code\u003e adds BM25 text search to any server — clients can query against tool names and descriptions and receive ranked results, without needing to know tool names upfront. This is useful anywhere the tool catalog is large, dynamic, or not known in advance.\u003c/p\u003e\n\u003ch2\u003ePrefab Apps\u003c/h2\u003e\n\u003cp\u003e3.1 adds early integration with \u003ca href=\"https://prefab.prefect.io\"\u003ePrefab\u003c/a\u003e, a frontend framework with a Python DSL that compiles to React. The vision: Python developers building MCP servers shouldn't have to leave Python to ship a proper UI. Prefab is still under very active development (their words: \u0026quot;probably shouldn't use it yet\u0026quot;), but the integration is here, the pieces are aligning, and 3.2 is where this gets interesting.\u003c/p\u003e\n\u003ch2\u003eAuth Additions\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eMultiAuth\u003c/code\u003e lets you compose multiple token verification sources into a single auth layer — useful when you need to accept tokens from more than one provider (e.g., internal JWTs alongside a third-party OAuth provider). This release also adds out-of-the-box support for \u003cstrong\u003ePropelAuth\u003c/strong\u003e and a \u003cstrong\u003eGoogle GenAI sampling handler\u003c/strong\u003e.\u003c/p\u003e\n\u003ch2\u003eUnder the Hood\u003c/h2\u003e\n\u003cp\u003eHeavy imports are now lazy-loaded, meaningfully reducing startup time for servers that don't use every feature. \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e gain a \u003ccode\u003e-m\u003c/code\u003e/\u003ccode\u003e--module\u003c/code\u003e flag for module-style invocation, \u003ccode\u003eMCPConfigTransport\u003c/code\u003e now correctly persists sessions across tool calls, and \u003ccode\u003esearch_result_serializer\u003c/code\u003e gives you a hook to customize how search results are serialized for markdown output. Eight new contributors, and the usual round of fixes.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003ePrefectHQ/fastmcp#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003ePrefectHQ/fastmcp#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003ePrefectHQ/fastmcp#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003ePrefectHQ/fastmcp#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003ePrefectHQ/fastmcp#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003ePrefectHQ/fastmcp#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003ePrefectHQ/fastmcp#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003ePrefectHQ/fastmcp#3310\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/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.1\"\u003ev3.1.1: 'Tis But a Patch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePins \u003ccode\u003epydantic-monty\u003c/code\u003e below 0.0.8 to fix a breaking change in Monty that affects code mode. Monty 0.0.8 removed the \u003ccode\u003eexternal_functions\u003c/code\u003e constructor parameter, causing \u003ccode\u003eMontySandboxProvider\u003c/code\u003e to fail. This patch caps the version so existing installs work correctly.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin pydantic-monty below 0.0.8 to fix code mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3497\"\u003e#3497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.1.0...v3.1.1\"\u003ev3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.1.0\"\u003ev3.1.0: Code to Joy\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFastMCP 3.1 is the Code Mode release. The 3.0 architecture introduced providers and transforms as the extensibility layer — 3.1 puts that architecture to work, shipping the most requested capability since launch: servers that can find and execute code on behalf of agents, without requiring clients to know what tools exist.\u003c/p\u003e\n\u003ch3\u003eNew Features 🎉\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Search transforms for tool discovery by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3154\"\u003e#3154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd experimental CodeMode transform by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3297\"\u003e#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Prefab Apps integration for MCP tool UIs by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3316\"\u003e#3316\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLazy-load heavy imports to reduce import time by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3295\"\u003e#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd http_client parameter to all token verifiers for connection pooling by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3300\"\u003e#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd in-memory caching for token introspection results by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3298\"\u003e#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SessionStart hook to install gh CLI in cloud sessions by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3308\"\u003e#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty 0.0.19 type errors by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3310\"\u003e#3310\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCode Mode: Add resource limits to MontySandboxProvider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3326\"\u003e#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept transforms as FastMCP init kwarg by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3324\"\u003e#3324\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit large test files to comply with loq line limit by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd -m/--module flag to \u003ccode\u003efastmcp run\u003c/code\u003e and \u003ccode\u003edev inspector\u003c/code\u003e by \u003ca href=\"https://github.com/dgenio\"\u003e\u003ccode\u003e@​dgenio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3331\"\u003e#3331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd search_result_serializer hook and serialize_tools_for_output_markdown by \u003ca href=\"https://github.com/MagnusS0\"\u003e\u003ccode\u003e@​MagnusS0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3337\"\u003e#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MultiAuth for composing multiple token verification sources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3335\"\u003e#3335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdds PropelAuth as an AuthProvider by \u003ca href=\"https://github.com/andrew-propelauth\"\u003e\u003ccode\u003e@​andrew-propelauth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3358\"\u003e#3358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace vendored DI with uncalled-for by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3301\"\u003e#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecompose CodeMode into composable discovery tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3354\"\u003e#3354\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(contrib): auto-sync MCPMixin decorators with from_function signatures by \u003ca href=\"https://github.com/AnkeshThakur\"\u003e\u003ccode\u003e@​AnkeshThakur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3323\"\u003e#3323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Google GenAI Sampling Handler by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/2977\"\u003e#2977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ListTools, search limit, and catalog size annotation to CodeMode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3359\"\u003e#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow configuring FastMCP transport setting in the same way as other configuration by \u003ca href=\"https://github.com/jvdmr\"\u003e\u003ccode\u003e@​jvdmr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1796\"\u003e#1796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd include_unversioned option to VersionFilter by \u003ca href=\"https://github.com/yangbaechu\"\u003e\u003ccode\u003e@​yangbaechu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3349\"\u003e#3349\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/PrefectHQ/fastmcp/commit/8bc31360e85b1192e78615f09fc525d57ff5c5f7\"\u003e\u003ccode\u003e8bc3136\u003c/code\u003e\u003c/a\u003e Restructure docs navigation: CLI section, Composition, More (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3361\"\u003e#3361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/8a356ad87025fa94eccf85ccaeb120683a3aad61\"\u003e\u003ccode\u003e8a356ad\u003c/code\u003e\u003c/a\u003e Add include_unversioned option to VersionFilter (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3349\"\u003e#3349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/fccbd43c1ea43a9f157d51aadaeda1467d91801a\"\u003e\u003ccode\u003efccbd43\u003c/code\u003e\u003c/a\u003e Add FASTMCP_TRANSPORT setting for default transport selection (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/1796\"\u003e#1796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/404b820144152a85d38176bbfac7aebf9e07ef23\"\u003e\u003ccode\u003e404b820\u003c/code\u003e\u003c/a\u003e Add ListTools, search limit, and catalog size annotation to CodeMode (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3359\"\u003e#3359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/49534ce91df601ff41f255d88344fe93e8968c57\"\u003e\u003ccode\u003e49534ce\u003c/code\u003e\u003c/a\u003e Add Google GenAI Sampling Handler (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/af557388c71749ff839a85181f7db20216bff2d9\"\u003e\u003ccode\u003eaf55738\u003c/code\u003e\u003c/a\u003e feat(contrib): auto-sync MCPMixin decorators with from_function signatures (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/902b63f67652f0ce2cc102d68384024bc7707de2\"\u003e\u003ccode\u003e902b63f\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3313\"\u003e#3313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f2dd2e5124e39d6f42d21382f2df3fa851704ec5\"\u003e\u003ccode\u003ef2dd2e5\u003c/code\u003e\u003c/a\u003e Fix session persistence across tool calls in multi-server MCPConfigTransport ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/2ab8beb195a743f2a1cd02efd4a27c563305c19e\"\u003e\u003ccode\u003e2ab8beb\u003c/code\u003e\u003c/a\u003e Remove system role references from docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3356\"\u003e#3356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/59da3e4ed444d78e44e72b3a3a2452fdf6845be1\"\u003e\u003ccode\u003e59da3e4\u003c/code\u003e\u003c/a\u003e Decompose CodeMode into composable discovery tools (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3354\"\u003e#3354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.5...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `neo4j` from 6.0.3 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/releases\"\u003eneo4j's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNeo4j Python Driver 6.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\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/neo4j/neo4j-python-driver/blob/6.x/CHANGELOG.md\"\u003eneo4j's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eNeo4j Driver Change Log (breaking/major changes only)\u003c/h1\u003e\n\u003cp\u003eSee also \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki\u003c/a\u003e for a full changelog.\u003c/p\u003e\n\u003ch2\u003eNEXT RELEASE\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNo breaking or major changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.14 support added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.7, 3.8, and 3.9 support has been dropped.\u003c/li\u003e\n\u003cli\u003eRemove deprecated package alias \u003ccode\u003eneo4j-driver\u003c/code\u003e. Use \u003ccode\u003epip install neo4j\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup.py\u003c/code\u003e. Please use a recent enough packaging/build tool that supports \u003ccode\u003epyproject.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated modules:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.conf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.data\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.meta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.packstream\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.routing\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.arithmetic\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.clock_implementation\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.hydration\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.metaclasses\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.query\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.summary\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRemove deprecated exports from \u003ccode\u003eneo4j\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elog\u003c/code\u003e, \u003ccode\u003eConfig\u003c/code\u003e, \u003ccode\u003ePoolConfig\u003c/code\u003e, \u003ccode\u003eSessionConfig\u003c/code\u003e, \u003ccode\u003eWorkspaceConfig\u003c/code\u003e (internal - no replacement)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSummaryNotificationPosition\u003c/code\u003e (use \u003ccode\u003eSummaryInputPosition\u003c/code\u003e instead)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapi.Version\u003c/code\u003e has been removed as it's unused now.\u003cbr /\u003e\n\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e now is a \u003ccode\u003etuple[int, int]\u003c/code\u003e insteadof a \u003ccode\u003eapi.Version\u003c/code\u003e.\nThis should be drop-in replacement is most cases:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e was a sup-type of \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e was already documented and typed as \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e's additional methods were undocumented and shouldn't have been used\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eChanged errors raised under certain circumstances\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eConfigurationError\u003c/code\u003e if the passed \u003ccode\u003eauth\u003c/code\u003e parameters is not valid (instead of \u003ccode\u003eAuthError\u003c/code\u003e)\n\u003cul\u003e\n\u003cli\u003eThis improves the differentiation between \u003ccode\u003eDriverError\u003c/code\u003e for client-side errors and \u003ccode\u003eNeo4jError\u003c/code\u003e for server-side\nerrors.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eaccess_mode\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eValueError\u003c/code\u003e on invalid value (instead of \u003ccode\u003eClientError\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eConsistently check the value (also for non-routing drivers)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.exceptions.UnsupportedServerProduct\u003c/code\u003e if no common bolt protocol version could be negotiated with the server\n(instead of internal \u003ccode\u003eneo4j._exceptions.BoltHandshakeError\u003c/code\u003e).\u003cbr /\u003e\n\u003ccode\u003eUnsupportedServerProduct\u003c/code\u003e is now a subclass of \u003ccode\u003eConfigurationError\u003c/code\u003e (instead of \u003ccode\u003eException\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econnection_acquisition_timeout\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eValueError\u003c/code\u003e on invalid values (instead of \u003ccode\u003eClientError\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\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/neo4j/neo4j-python-driver/commit/4a3fcdfc325c5ff11a92b6190c179853ad4c5b96\"\u003e\u003ccode\u003e4a3fcdf\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a56e7f6aada9ec53465a4428cb7334be15c601f2\"\u003e\u003ccode\u003ea56e7f6\u003c/code\u003e\u003c/a\u003e Unify connection error handling between async and sync (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/fc4811d195f7b48049abed22992c44e57e2016ec\"\u003e\u003ccode\u003efc4811d\u003c/code\u003e\u003c/a\u003e Fix: connection_acquisition_timeout now covers TLS handshake (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/c8c4e5b7ad420c0c4f4278d2fff896f6a9983815\"\u003e\u003ccode\u003ec8c4e5b\u003c/code\u003e\u003c/a\u003e Docs: Fix outdated preview notes (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/8c7c19bc80f33095f08d34c454292a69430dcae8\"\u003e\u003ccode\u003e8c7c19b\u003c/code\u003e\u003c/a\u003e Add .semgrepignore (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1270\"\u003e#1270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a0819c233664e87e24c251e2e29eea24738d63bb\"\u003e\u003ccode\u003ea0819c2\u003c/code\u003e\u003c/a\u003e Fix AttributeError when pool is None in Bolt3 error handling (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/4fc39f3e6f3ea53e2987cd30d47412b36a5f7025\"\u003e\u003ccode\u003e4fc39f3\u003c/code\u003e\u003c/a\u003e Python 3.14 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1264\"\u003e#1264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/compare/6.0.3...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.1.0 to 7.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix AttributeError in cluster metrics recording when connection is None or ClusterNode object instance is used to extract the connection info (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords might leak in plain text logs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cp\u003e-Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpose basic Otel classes and functions to be importable through redis.observability to match the examples in the readthedocs (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\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/redis/redis-py/commit/b72f24ad6a2226d46aed770e18094a86117d2217\"\u003e\u003ccode\u003eb72f24a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0a4e0afe36504c3fb6df1e38683ea946febac9d3\"\u003e\u003ccode\u003e0a4e0af\u003c/code\u003e\u003c/a\u003e Refactored health check logic for MultiDBClient (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3994\"\u003e#3994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/15492c9156d3ab8dce05360977480510cf24fbf9\"\u003e\u003ccode\u003e15492c9\u003c/code\u003e\u003c/a\u003e Refactored connection count and SCH metric collection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cd964ac96649df872a051835e9a52e05a5090607\"\u003e\u003ccode\u003ecd964ac\u003c/code\u003e\u003c/a\u003e Expose basic Otel classes and funtions to be importable through redis.observa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ab74d02ed9b15176f67edb817de83524f8145a\"\u003e\u003ccode\u003e46ab74d\u003c/code\u003e\u003c/a\u003e Fixing security concern in \u003cstrong\u003erepr\u003c/strong\u003e methods for ConnectionPools - passwords m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/26482dbaae38abdb1966d9b1c803331e2dab2053\"\u003e\u003ccode\u003e26482db\u003c/code\u003e\u003c/a\u003e Fix AttributeError in cluster metrics recording when connection is None or Cl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.1.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003ePlanned Changes to Defaults and Flags in Mypy 2.0\u003c/h3\u003e\n\u003cp\u003eAs a reminder, we are planning to enable \u003ccode\u003e--local-partial-types\u003c/code\u003e by default in mypy 2.0, which\nwill likely be the next feature release. This will often require at least minor code changes. This\noption is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon\nmodes consistent.\u003c/p\u003e\n\u003cp\u003eNote that this release improves the compatibility of \u003ccode\u003e--local-partial-types\u003c/code\u003e significantly to\nmake the switch easier (see below for more).\u003c/p\u003e\n\u003cp\u003eThis can also be configured in a mypy configuration file (use \u003ccode\u003eFalse\u003c/code\u003e to disable):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003elocal_partial_types = True\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe will also enable \u003ccode\u003e--strict-bytes\u003c/code\u003e by default in mypy 2.0. This usually requires at most\nminor code changes to adopt. For more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e will be renamed to \u003ccode\u003e--allow-redefinition\u003c/code\u003e. If you want\nto continue using the older \u003ccode\u003e--allow-redefinition\u003c/code\u003e semantics which are less flexible (e.g.\nlimited support for conditional redefinitions), you can switch to \u003ccode\u003e--allow-redefinition-old\u003c/code\u003e,\nwhich is currently supported as an alias to the legacy \u003ccode\u003e--allow-redefinition\u003c/code\u003e behavior.\nTo use \u003ccode\u003e--allow-redefinition\u003c/code\u003e in the upcoming mypy 2.0, you can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\u003c/code\u003e),\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v1.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/jychp/engramcp/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jychp%2Fengramcp/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"}},{"old_version":"4.14.0","new_version":"4.14.2","update_type":"patch","path":"/rss","pr_created_at":"2026-03-30T11:58:02.000Z","version_change":"4.14.0 → 4.14.2","issue":{"uuid":"4170138773","node_id":"PR_kwDOKAfLvc7OmJu5","number":127,"state":"open","title":"Bump testcontainers from 4.14.0 to 4.14.2 in /rss","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-30T11:58:02.000Z","updated_at":"2026-04-07T10:15:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"testcontainers","old_version":"4.14.0","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":"/rss","ecosystem":"pip"},"body":"Bumps [testcontainers](https://github.com/testcontainers/testcontainers-python) from 4.14.0 to 4.14.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.2\"\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/clemensv/real-time-sources/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Freal-time-sources/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":"/gtfs/gtfs_rt_producer/gtfs_rt_producer_kafka_producer","pr_created_at":"2026-03-30T11:57:46.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4170137380","node_id":"PR_kwDOKAfLvc7OmJd6","number":119,"state":"open","title":"Bump testcontainers from 4.14.1 to 4.14.2 in /gtfs/gtfs_rt_producer/gtfs_rt_producer_kafka_producer","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-30T11:57:46.000Z","updated_at":"2026-04-07T10:13:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":"/gtfs/gtfs_rt_producer/gtfs_rt_producer_kafka_producer","ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [testcontainers](https://github.com/testcontainers/testcontainers-python) from 4.14.1 to 4.14.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\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/clemensv/real-time-sources/pull/119","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Freal-time-sources/issues/119","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/119/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":null,"pr_created_at":"2026-03-27T02:46:14.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4148756885","node_id":"PR_kwDORKTFzM7N64km","number":53,"state":"open","title":"chore: Bump the all-python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T02:46:14.000Z","updated_at":"2026-03-27T02:47:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","group_name":"all-python","update_count":5,"packages":[{"name":"fastmcp","old_version":"2.14.5","new_version":"3.0.2","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"neo4j","old_version":"6.0.3","new_version":"6.1.0","repository_url":"https://github.com/neo4j/neo4j-python-driver"},{"name":"redis","old_version":"7.1.0","new_version":"7.3.0","repository_url":"https://github.com/redis/redis-py"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-python group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `2.14.5` | `3.0.2` |\n| [neo4j](https://github.com/neo4j/neo4j-python-driver) | `6.0.3` | `6.1.0` |\n| [redis](https://github.com/redis/redis-py) | `7.1.0` | `7.3.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n\n\nUpdates `fastmcp` from 2.14.5 to 3.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.2: Threecovery Mode II\u003c/h2\u003e\n\u003cp\u003eTwo community-contributed fixes: auth headers from MCP transport no longer leak through to downstream OpenAPI APIs, and background task workers now correctly receive the originating request ID. Plus a new docs example for context-aware tool factories.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: prevent MCP transport auth header from leaking to downstream OpenAPI APIs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3260\"\u003e#3260\u003c/a\u003e) by \u003ca href=\"https://github.com/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3262\"\u003ePrefectHQ/fastmcp#3262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: propagate origin_request_id to background task workers by \u003ca href=\"https://github.com/gfortaine\"\u003e\u003ccode\u003e@​gfortaine\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3175\"\u003ePrefectHQ/fastmcp#3175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd v3.0.1 release notes by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3259\"\u003ePrefectHQ/fastmcp#3259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add context-aware tool factory example by \u003ca href=\"https://github.com/machov\"\u003e\u003ccode\u003e@​machov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3264\"\u003ePrefectHQ/fastmcp#3264\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/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3262\"\u003ePrefectHQ/fastmcp#3262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/machov\"\u003e\u003ccode\u003e@​machov\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3264\"\u003ePrefectHQ/fastmcp#3264\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.1...v3.0.2\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.0.1...v3.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.1: Threecovery Mode\u003c/h2\u003e\n\u003cp\u003eFirst patch after 3.0 — mostly smoothing out rough edges discovered in the wild. The big ones: middleware state that wasn't surviving the trip to tool handlers now does, \u003ccode\u003eTool.from_tool()\u003c/code\u003e accepts callables again, OpenAPI schemas with circular references no longer crash discovery, and decorator overloads now return the correct types in function mode. Also adds \u003ccode\u003everify_id_token\u003c/code\u003e to OIDCProxy for providers (like some Azure AD configs) that issue opaque access tokens but standard JWT id_tokens.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd verify_id_token option to OIDCProxy by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3248\"\u003ePrefectHQ/fastmcp#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix v3.0.0 changelog compare link by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3223\"\u003ePrefectHQ/fastmcp#3223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix MDX parse error in upgrade guide prompts by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3227\"\u003ePrefectHQ/fastmcp#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-serializable state lost between middleware and tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3234\"\u003ePrefectHQ/fastmcp#3234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept callables in Tool.from_tool() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3235\"\u003ePrefectHQ/fastmcp#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve skill metadata through provider wrapping by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3237\"\u003ePrefectHQ/fastmcp#3237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix circular reference crash in OpenAPI schemas by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3245\"\u003ePrefectHQ/fastmcp#3245\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with future annotations and Context/Depends parameters by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3243\"\u003ePrefectHQ/fastmcp#3243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty ignore syntax in OpenAPI provider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3253\"\u003ePrefectHQ/fastmcp#3253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse max_completion_tokens instead of deprecated max_tokens in OpenAI handler by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3254\"\u003ePrefectHQ/fastmcp#3254\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty compatibility with upgraded deps by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3257\"\u003ePrefectHQ/fastmcp#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix decorator overload return types for function mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3258\"\u003ePrefectHQ/fastmcp#3258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync README with welcome.mdx, fix install count by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3224\"\u003ePrefectHQ/fastmcp#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument dict-to-Message prompt migration in upgrade guides by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3225\"\u003ePrefectHQ/fastmcp#3225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix v2 upgrade guide: remove incorrect v1 import advice by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3226\"\u003ePrefectHQ/fastmcp#3226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnimated banner by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3231\"\u003ePrefectHQ/fastmcp#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument mounted server state store isolation in upgrade guide by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3236\"\u003ePrefectHQ/fastmcp#3236\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.0...v3.0.1\"\u003ehttps://github.com/PrefectHQ/fastmcp/compare/v3.0.0...v3.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx\"\u003efastmcp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003ch2\u003etitle: \u0026quot;Changelog\u0026quot;\nicon: \u0026quot;list-check\u0026quot;\nrss: true\ntag: NEW\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.2\"\u003ev3.0.2: Threecovery Mode II\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTwo community-contributed fixes: auth headers from MCP transport no longer leak through to downstream OpenAPI APIs, and background task workers now correctly receive the originating request ID. Plus a new docs example for context-aware tool factories.\u003c/p\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: prevent MCP transport auth header from leaking to downstream OpenAPI APIs by \u003ca href=\"https://github.com/stakeswky\"\u003e\u003ccode\u003e@​stakeswky\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3262\"\u003e#3262\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: propagate origin_request_id to background task workers by \u003ca href=\"https://github.com/gfortaine\"\u003e\u003ccode\u003e@​gfortaine\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3175\"\u003e#3175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd v3.0.1 release notes by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3259\"\u003e#3259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add context-aware tool factory example by \u003ca href=\"https://github.com/machov\"\u003e\u003ccode\u003e@​machov\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3264\"\u003e#3264\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.0.1...v3.0.2\"\u003ev3.0.1...v3.0.2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.1\"\u003ev3.0.1: Three-covery Mode\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFirst patch after 3.0 — mostly smoothing out rough edges discovered in the wild. The big ones: middleware state that wasn't surviving the trip to tool handlers now does, \u003ccode\u003eTool.from_tool()\u003c/code\u003e accepts callables again, OpenAPI schemas with circular references no longer crash discovery, and decorator overloads now return the correct types in function mode. Also adds \u003ccode\u003everify_id_token\u003c/code\u003e to OIDCProxy for providers (like some Azure AD configs) that issue opaque access tokens but standard JWT id_tokens.\u003c/p\u003e\n\u003ch3\u003eEnhancements 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd verify_id_token option to OIDCProxy by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix v3.0.0 changelog compare link by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3223\"\u003e#3223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix MDX parse error in upgrade guide prompts by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3227\"\u003e#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-serializable state lost between middleware and tools by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3234\"\u003e#3234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept callables in Tool.from_tool() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve skill metadata through provider wrapping by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3237\"\u003e#3237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix circular reference crash in OpenAPI schemas by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3245\"\u003e#3245\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with future annotations and Context/Depends parameters by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3243\"\u003e#3243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty ignore syntax in OpenAPI provider by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3253\"\u003e#3253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse max_completion_tokens instead of deprecated max_tokens in OpenAI handler by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3254\"\u003e#3254\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ty compatibility with upgraded deps by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3257\"\u003e#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix decorator overload return types for function mode by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3258\"\u003e#3258\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync README with welcome.mdx, fix install count by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument dict-to-Message prompt migration in upgrade guides by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3225\"\u003e#3225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix v2 upgrade guide: remove incorrect v1 import advice by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3226\"\u003e#3226\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/PrefectHQ/fastmcp/commit/c71840631e03cddfd391ad2a91d5bbab7aef05d6\"\u003e\u003ccode\u003ec718406\u003c/code\u003e\u003c/a\u003e docs: add context-aware tool factory example (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/40d3190317707d46019ded953325cbcad78bca57\"\u003e\u003ccode\u003e40d3190\u003c/code\u003e\u003c/a\u003e fix: propagate origin_request_id to background task workers (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3175\"\u003e#3175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/d85cfb84e1f6dfb66ad402383356f361ad79b1d2\"\u003e\u003ccode\u003ed85cfb8\u003c/code\u003e\u003c/a\u003e Revert to long-lived PR approach for auto-generated docs/schema (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3272\"\u003e#3272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/83d6254757806c1b9f2e07c9ffcbd580a5b96aec\"\u003e\u003ccode\u003e83d6254\u003c/code\u003e\u003c/a\u003e Allow Marvin to open PRs on comment (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3267\"\u003e#3267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/0d4580fef32a8666b93dabbef86e05d763307ba4\"\u003e\u003ccode\u003e0d4580f\u003c/code\u003e\u003c/a\u003e fix: prevent MCP transport auth header from leaking to downstream OpenAPI API...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/3ec7cfa0d55c8ecd0550f656e4f1bc82ca4b0325\"\u003e\u003ccode\u003e3ec7cfa\u003c/code\u003e\u003c/a\u003e Add v3.0.1 release notes (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3259\"\u003e#3259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/bb3e159bc643d3d5a8ed336a794c828abbf4e00e\"\u003e\u003ccode\u003ebb3e159\u003c/code\u003e\u003c/a\u003e Fix decorator overload return types for function mode (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3258\"\u003e#3258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/43e9cdd2758c64f7a12e8290794df468d5d97948\"\u003e\u003ccode\u003e43e9cdd\u003c/code\u003e\u003c/a\u003e Fix ty compatibility with upgraded deps (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3257\"\u003e#3257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/2218a6f52a2e5ba89d9b1705e2fbe2d8ea6de08d\"\u003e\u003ccode\u003e2218a6f\u003c/code\u003e\u003c/a\u003e Use max_completion_tokens instead of deprecated max_tokens in OpenAI handler ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/1d7e92ecaba5be516bf7f4140d4dee43ed856c88\"\u003e\u003ccode\u003e1d7e92e\u003c/code\u003e\u003c/a\u003e Fix ty ignore syntax in OpenAPI provider (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3253\"\u003e#3253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v2.14.5...v3.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `neo4j` from 6.0.3 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/releases\"\u003eneo4j's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNeo4j Python Driver 6.1.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki/6.x-changelog#610\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/neo4j/neo4j-python-driver/blob/6.x/CHANGELOG.md\"\u003eneo4j's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eNeo4j Driver Change Log (breaking/major changes only)\u003c/h1\u003e\n\u003cp\u003eSee also \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/wiki\"\u003ehttps://github.com/neo4j/neo4j-python-driver/wiki\u003c/a\u003e for a full changelog.\u003c/p\u003e\n\u003ch2\u003eNEXT RELEASE\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNo breaking or major changes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.14 support added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.7, 3.8, and 3.9 support has been dropped.\u003c/li\u003e\n\u003cli\u003eRemove deprecated package alias \u003ccode\u003eneo4j-driver\u003c/code\u003e. Use \u003ccode\u003epip install neo4j\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetup.py\u003c/code\u003e. Please use a recent enough packaging/build tool that supports \u003ccode\u003epyproject.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated modules:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.conf\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.data\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.meta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.packstream\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.routing\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.arithmetic\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.clock_implementation\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.hydration\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.time.metaclasses\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.query\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.work.summary\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eRemove deprecated exports from \u003ccode\u003eneo4j\u003c/code\u003e:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elog\u003c/code\u003e, \u003ccode\u003eConfig\u003c/code\u003e, \u003ccode\u003ePoolConfig\u003c/code\u003e, \u003ccode\u003eSessionConfig\u003c/code\u003e, \u003ccode\u003eWorkspaceConfig\u003c/code\u003e (internal - no replacement)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSummaryNotificationPosition\u003c/code\u003e (use \u003ccode\u003eSummaryInputPosition\u003c/code\u003e instead)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapi.Version\u003c/code\u003e has been removed as it's unused now.\u003cbr /\u003e\n\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e now is a \u003ccode\u003etuple[int, int]\u003c/code\u003e insteadof a \u003ccode\u003eapi.Version\u003c/code\u003e.\nThis should be drop-in replacement is most cases:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e was a sup-type of \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServerInfo.protocol_version\u003c/code\u003e was already documented and typed as \u003ccode\u003etuple[int, int]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eVersion\u003c/code\u003e's additional methods were undocumented and shouldn't have been used\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eChanged errors raised under certain circumstances\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eConfigurationError\u003c/code\u003e if the passed \u003ccode\u003eauth\u003c/code\u003e parameters is not valid (instead of \u003ccode\u003eAuthError\u003c/code\u003e)\n\u003cul\u003e\n\u003cli\u003eThis improves the differentiation between \u003ccode\u003eDriverError\u003c/code\u003e for client-side errors and \u003ccode\u003eNeo4jError\u003c/code\u003e for server-side\nerrors.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eaccess_mode\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eValueError\u003c/code\u003e on invalid value (instead of \u003ccode\u003eClientError\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eConsistently check the value (also for non-routing drivers)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eneo4j.exceptions.UnsupportedServerProduct\u003c/code\u003e if no common bolt protocol version could be negotiated with the server\n(instead of internal \u003ccode\u003eneo4j._exceptions.BoltHandshakeError\u003c/code\u003e).\u003cbr /\u003e\n\u003ccode\u003eUnsupportedServerProduct\u003c/code\u003e is now a subclass of \u003ccode\u003eConfigurationError\u003c/code\u003e (instead of \u003ccode\u003eException\u003c/code\u003e directly).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econnection_acquisition_timeout\u003c/code\u003e configuration option\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eValueError\u003c/code\u003e on invalid values (instead of \u003ccode\u003eClientError\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\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/neo4j/neo4j-python-driver/commit/4a3fcdfc325c5ff11a92b6190c179853ad4c5b96\"\u003e\u003ccode\u003e4a3fcdf\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a56e7f6aada9ec53465a4428cb7334be15c601f2\"\u003e\u003ccode\u003ea56e7f6\u003c/code\u003e\u003c/a\u003e Unify connection error handling between async and sync (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/fc4811d195f7b48049abed22992c44e57e2016ec\"\u003e\u003ccode\u003efc4811d\u003c/code\u003e\u003c/a\u003e Fix: connection_acquisition_timeout now covers TLS handshake (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/c8c4e5b7ad420c0c4f4278d2fff896f6a9983815\"\u003e\u003ccode\u003ec8c4e5b\u003c/code\u003e\u003c/a\u003e Docs: Fix outdated preview notes (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/8c7c19bc80f33095f08d34c454292a69430dcae8\"\u003e\u003ccode\u003e8c7c19b\u003c/code\u003e\u003c/a\u003e Add .semgrepignore (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1270\"\u003e#1270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/a0819c233664e87e24c251e2e29eea24738d63bb\"\u003e\u003ccode\u003ea0819c2\u003c/code\u003e\u003c/a\u003e Fix AttributeError when pool is None in Bolt3 error handling (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/neo4j/neo4j-python-driver/commit/4fc39f3e6f3ea53e2987cd30d47412b36a5f7025\"\u003e\u003ccode\u003e4fc39f3\u003c/code\u003e\u003c/a\u003e Python 3.14 (\u003ca href=\"https://redirect.github.com/neo4j/neo4j-python-driver/issues/1264\"\u003e#1264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/neo4j/neo4j-python-driver/compare/6.0.3...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.1.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle connection attributes conditionally for metrics and set connection data on exceptions in cluster error handling (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3964\"\u003e#3964\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved batch_size and consumer_name attributes from OTel metrics (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3978\"\u003e#3978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixing error handling of connection buffer purging of closed connections. Enabling troubleshooting logging for maintenance notifications e2e tests. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3971\"\u003e#3971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix protocol validation: replace finally with else and store parsed int (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3965\"\u003e#3965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn copies from _get_free/in_use_connections and fix async _mock (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing shard channel message types to async PubSub (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues with ClusterPipeline connection management (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3804\"\u003e#3804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(pubsub): avoid UnicodeDecodeError on reconnect with binary channel names (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3944\"\u003e#3944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/dotlambda\"\u003e\u003ccode\u003e@​dotlambda\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rhoboro\"\u003e\u003ccode\u003e@​rhoboro\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/skylarkoo7\"\u003e\u003ccode\u003e@​skylarkoo7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/praboud\"\u003e\u003ccode\u003e@​praboud\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/abf5bcb2ded3f393cd3d74803b058df325e3755c\"\u003e\u003ccode\u003eabf5bcb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b0303bf90792cfdfff951f446c71ec7baf83e0e\"\u003e\u003ccode\u003e5b0303b\u003c/code\u003e\u003c/a\u003e fix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e9fba8689f74e4aea45c8b9d75e517e29c54a76a\"\u003e\u003ccode\u003ee9fba86\u003c/code\u003e\u003c/a\u003e Added OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7ce513d262288fb2d79a1d59dff0cf5ff0cb13b0\"\u003e\u003ccode\u003e7ce513d\u003c/code\u003e\u003c/a\u003e fix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8e3a5b2f10677c58951fd04f79db1802f79a9bea\"\u003e\u003ccode\u003e8e3a5b2\u003c/code\u003e\u003c/a\u003e remove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b46430e23748d85140b143cbce02523e284482e\"\u003e\u003ccode\u003e5b46430\u003c/code\u003e\u003c/a\u003e Hold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.1.0...v7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/jychp/engramcp/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jychp%2Fengramcp/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":null,"pr_created_at":"2026-03-23T08:35:16.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4119184945","node_id":"PR_kwDOROLWo87Mm-cP","number":47,"state":"open","title":"chore(deps): Bump the python-minor group across 1 directory with 10 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-23T08:35:16.000Z","updated_at":"2026-03-23T08:35:17.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":10,"packages":[{"name":"fastapi","old_version":"0.133.0","new_version":"0.135.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.42.0"},{"name":"sqlalchemy","old_version":"2.0.47","new_version":"2.0.48"},{"name":"geoalchemy2","old_version":"0.18.3","new_version":"0.18.4","repository_url":"https://github.com/geoalchemy/geoalchemy2"},{"name":"redis","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"sentry-sdk","old_version":"2.53.0","new_version":"2.55.0"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"ruff","old_version":"0.15.2","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 10 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.133.0` | `0.135.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.42.0` |\n| [sqlalchemy[asyncio]](https://github.com/sqlalchemy/sqlalchemy) | `2.0.47` | `2.0.48` |\n| [geoalchemy2](https://github.com/geoalchemy/geoalchemy2) | `0.18.3` | `0.18.4` |\n| [redis](https://github.com/redis/redis-py) | `7.2.0` | `7.3.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [sentry-sdk[fastapi]](https://github.com/getsentry/sentry-python) | `2.53.0` | `2.55.0` |\n| [testcontainers[postgres,redis]](https://github.com/testcontainers/testcontainers-python) | `4.14.1` | `4.14.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.2` | `0.15.7` |\n\n\nUpdates `fastapi` from 0.133.0 to 0.135.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.135.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed in the request async exit stack. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15038\"\u003e#15038\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15007\"\u003e#15007\u003c/a\u003e by \u003ca href=\"https://github.com/adityagiri3600\"\u003e\u003ccode\u003e@​adityagiri3600\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Skill, optimize context, trim and refactor into references. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15031\"\u003e#15031\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/15037\"\u003e#15037\u003c/a\u003e 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/15029\"\u003e#15029\u003c/a\u003e 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/15036\"\u003e#15036\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.135.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Server Sent Events. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15030\"\u003e#15030\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/server-sent-events/\"\u003eServer-Sent Events (SSE)\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.134.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for streaming JSON Lines and binary data with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15022\"\u003e#15022\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\u003eThis also upgrades Starlette from \u003ccode\u003e\u0026gt;=0.40.0\u003c/code\u003e to \u003ccode\u003e\u0026gt;=0.46.0\u003c/code\u003e, as it's needed to properly unrwap and re-raise exceptions from exception groups.\u003c/li\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/stream-json-lines/\"\u003eStream JSON Lines\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAnd new docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/stream-data/\"\u003eStream Data\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📝 Update Library Agent Skill with streaming responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15024\"\u003e#15024\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs for responses and new stream with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15023\"\u003e#15023\u003c/a\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\u003eawait\u003c/code\u003e in \u003ccode\u003eStreamingResponse\u003c/code\u003e code example to allow cancellation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14681\"\u003e#14681\u003c/a\u003e by \u003ca href=\"https://github.com/casperdcl\"\u003e\u003ccode\u003e@​casperdcl\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Rename \u003ccode\u003edocs_src/websockets\u003c/code\u003e to \u003ccode\u003edocs_src/websockets_\u003c/code\u003e to avoid import errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14979\"\u003e#14979\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🔨 Run tests with \u003ccode\u003epytest-xdist\u003c/code\u003e and \u003ccode\u003epytest-cov\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14992\"\u003e#14992\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.133.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Add FastAPI Agent Skill. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14982\"\u003e#14982\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 more about it in \u003ca href=\"https://tiangolo.com/ideas/library-agent-skills/\"\u003eLibrary Agent Skills\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Fix all tests are skipped on Windows. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14994\"\u003e#14994\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\u003c/blockquote\u003e\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/ca5f60ee72f35fb2134d8b5d26bbb75965bcff66\"\u003e\u003ccode\u003eca5f60e\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/87f75aa62c1dde90f4dfbfa7fc2c33127d757d34\"\u003e\u003ccode\u003e87f75aa\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a9258b169dce3e321f614c14b1877c18750d6c7\"\u003e\u003ccode\u003e8a9258b\u003c/code\u003e\u003c/a\u003e 🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/60385078233e00f9f13307ff038f12f88fc5c240\"\u003e\u003ccode\u003e6038507\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c796ba4f46a6e81477ce44eabe13fd01d82f2c4a\"\u003e\u003ccode\u003ec796ba4\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15037\"\u003e#15037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b24aa03b888b78dd2ec6540d47c84a8676d6a7cb\"\u003e\u003ccode\u003eb24aa03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c6104752a97273976c8a63e897de98a48f19ce0\"\u003e\u003ccode\u003e2c61047\u003c/code\u003e\u003c/a\u003e ✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15007\"\u003e#15007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3bbeef8a2687fdf34d4de2d304a59135a30e63c\"\u003e\u003ccode\u003ee3bbeef\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d726c8cb2b8e00279487fa8661a5276d2ff2125f\"\u003e\u003ccode\u003ed726c8c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cf514e6d3839ca69ca45a55a6f862e74892339b9\"\u003e\u003ccode\u003ecf514e6\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Contributors and Translators (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15029\"\u003e#15029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.133.0...0.135.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.41.0 to 0.42.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[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2825\"\u003eKludex/uvicorn#2825\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.41.0...0.42.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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\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/02bed6f8c38e74f684bb0e572977a9bfdc1f6fea\"\u003e\u003ccode\u003e02bed6f\u003c/code\u003e\u003c/a\u003e Version 0.42.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d8f25013161d8206e129e39bf48432d3a85e1744\"\u003e\u003ccode\u003ed8f2501\u003c/code\u003e\u003c/a\u003e chore: pre-create Config objects in benchmarks to measure protocol hot paths ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9dbb7836bb0fdb446d083ecd8dc5a2a95bb96b98\"\u003e\u003ccode\u003e9dbb783\u003c/code\u003e\u003c/a\u003e Add WebSocket protocol benchmarks for wsproto and websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b3c69da8c1a36e1834e614abe38243671e156077\"\u003e\u003ccode\u003eb3c69da\u003c/code\u003e\u003c/a\u003e Use bytearray for request body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3f3ebee20f46504a3f7279dd72f9c24ce9070b11\"\u003e\u003ccode\u003e3f3ebee\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epytest-xdist\u003c/code\u003e for CodSpeed benchmark runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d072de754f825bee4710363dd49d41efd5285dcc\"\u003e\u003ccode\u003ed072de7\u003c/code\u003e\u003c/a\u003e Add fragmented body benchmark for chunked body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2846\"\u003e#2846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/e300c2c75d71bea6f8d1799ca6f182f1e5583aaa\"\u003e\u003ccode\u003ee300c2c\u003c/code\u003e\u003c/a\u003e Add CodSpeed benchmark suite for HTTP protocol hot paths (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1fa697651bacf10d72f74de104ead814ce6fcdc0\"\u003e\u003ccode\u003e1fa6976\u003c/code\u003e\u003c/a\u003e Escape brackets and backslash in httptools HEADER_RE regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/59ec1de7a4f07afbd139812f033f3af8b784de74\"\u003e\u003ccode\u003e59ec1de\u003c/code\u003e\u003c/a\u003e Fix multiple issues in websockets sansio implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2fc0efcdd958abd3adbe6ea19682408d6b2e1b18\"\u003e\u003ccode\u003e2fc0efc\u003c/code\u003e\u003c/a\u003e Clarify Windows asyncio event loop selection in docs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2843\"\u003e#2843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy[asyncio]` from 2.0.47 to 2.0.48\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[asyncio]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.48\u003c/h1\u003e\n\u003cp\u003eReleased: March 2, 2026\u003c/p\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Fixed a critical issue in \u003ccode\u003eEngine\u003c/code\u003e where connections created in\nconjunction with the \u003ccode\u003eDialectEvents.do_connect()\u003c/code\u003e event listeners\nwould receive shared, mutable collections for the connection arguments,\nleading to a variety of potential issues including unlimited growth of the\nargument list as well as elements within the parameter dictionary being\nshared among concurrent connection calls.  In particular this could impact\ndo_connect routines making use of complex mutable authentication\nstructures.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13144\"\u003e#13144\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\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 `geoalchemy2` from 0.18.3 to 0.18.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/geoalchemy/geoalchemy2/releases\"\u003egeoalchemy2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.18.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: fix shapely import by \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/588\"\u003egeoalchemy/geoalchemy2#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: fix setuptools deprecation warning by \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/589\"\u003egeoalchemy/geoalchemy2#589\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Make Coveralls optional since the service is down at the moment by \u003ca href=\"https://github.com/adrien-berchet\"\u003e\u003ccode\u003e@​adrien-berchet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/590\"\u003egeoalchemy/geoalchemy2#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: try the official Coveralls action by \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/592\"\u003egeoalchemy/geoalchemy2#592\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease: 0.18.4 by \u003ca href=\"https://github.com/adrien-berchet\"\u003e\u003ccode\u003e@​adrien-berchet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/pull/591\"\u003egeoalchemy/geoalchemy2#591\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/geoalchemy/geoalchemy2/compare/0.18.3...0.18.4\"\u003ehttps://github.com/geoalchemy/geoalchemy2/compare/0.18.3...0.18.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/geoalchemy/geoalchemy2/blob/main/CHANGES.txt\"\u003egeoalchemy2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.18.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Move to the official Coveralls action - \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: fix setuptools deprecation warning - \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Fix shapely import - \u003ca href=\"https://github.com/pjonsson\"\u003e\u003ccode\u003e@​pjonsson\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/588\"\u003e#588\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/geoalchemy/geoalchemy2/commit/beb96c39754704a2ec712de3857d72b8a8ecc4d3\"\u003e\u003ccode\u003ebeb96c3\u003c/code\u003e\u003c/a\u003e Release: 0.18.4 (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/6266c25a12b3d406c403db2112e7c55bf3739d97\"\u003e\u003ccode\u003e6266c25\u003c/code\u003e\u003c/a\u003e CI: Move to the official Coveralls action (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/592\"\u003e#592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/f402f6347454374b7719e612a5ebe5a1a766c8fa\"\u003e\u003ccode\u003ef402f63\u003c/code\u003e\u003c/a\u003e CI: Make Coveralls optional since the service is down at the moment (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/590\"\u003e#590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/36ebd0f650d1c60b2e24c896d4662818f0162414\"\u003e\u003ccode\u003e36ebd0f\u003c/code\u003e\u003c/a\u003e Fix: fix setuptools deprecation warning (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/geoalchemy/geoalchemy2/commit/f11a1dadb94a31272cb58f3ef04f07490d174d34\"\u003e\u003ccode\u003ef11a1da\u003c/code\u003e\u003c/a\u003e Fix: Fix shapely import (\u003ca href=\"https://redirect.github.com/geoalchemy/geoalchemy2/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/geoalchemy/geoalchemy2/compare/0.18.3...0.18.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 7.2.0 to 7.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.3.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eOpenTelemetry Native Metrics Support for asynchronous clients\u003c/strong\u003e\nAdded comprehensive OpenTelemetry metrics support for asynchronous clients following the \u003ca href=\"https://opentelemetry.io/docs/specs/semconv/database/database-metrics/\"\u003eOpenTelemetry Database Client Semantic Conventions\u003c/a\u003e.\nMetric groups include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommand metrics: Operation duration with retry tracking\u003c/li\u003e\n\u003cli\u003eConnection basic: Connection count and creation time\u003c/li\u003e\n\u003cli\u003eResiliency: Errors, handoffs, timeout relaxation\u003c/li\u003e\n\u003cli\u003eConnection advanced: Wait time and use time\u003c/li\u003e\n\u003cli\u003ePubsub metrics: Published and received messages\u003c/li\u003e\n\u003cli\u003eStream metrics: Processing duration and maintenance notifications\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[async] Adding access to cluster client's nodes_manager and set_response_callback in ClusterPipeline objects (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3989\"\u003e#3989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/turanalmammadov\"\u003e\u003ccode\u003e@​turanalmammadov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/haosenwang1018\"\u003e\u003ccode\u003e@​haosenwang1018\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Medno\"\u003e\u003ccode\u003e@​Medno\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.2.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHandle connection attributes conditionally for metrics and set connection data on exceptions in cluster error handling (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3964\"\u003e#3964\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Deprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved batch_size and consumer_name attributes from OTel metrics (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3978\"\u003e#3978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixing error handling of connection buffer purging of closed connections. Enabling troubleshooting logging for maintenance notifications e2e tests. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3971\"\u003e#3971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix protocol validation: replace finally with else and store parsed int (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3965\"\u003e#3965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn copies from _get_free/in_use_connections and fix async _mock (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing shard channel message types to async PubSub (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issues with ClusterPipeline connection management (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3804\"\u003e#3804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(pubsub): avoid UnicodeDecodeError on reconnect with binary channel names (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3944\"\u003e#3944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/dotlambda\"\u003e\u003ccode\u003e@​dotlambda\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rhoboro\"\u003e\u003ccode\u003e@​rhoboro\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/skylarkoo7\"\u003e\u003ccode\u003e@​skylarkoo7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/praboud\"\u003e\u003ccode\u003e@​praboud\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\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/redis/redis-py/commit/8ecbc7a728792ab9c71078cb330a64c225cb3351\"\u003e\u003ccode\u003e8ecbc7a\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/11043df86ed5f892cde1f34f08f3450f13bb6339\"\u003e\u003ccode\u003e11043df\u003c/code\u003e\u003c/a\u003e typing: accept single-key input for blpop and brpop (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d9581250202123ebf68d299e8f2ea79fa9bd7210\"\u003e\u003ccode\u003ed958125\u003c/code\u003e\u003c/a\u003e fix: use KeysT for blpop and brpop keys parameter type annotation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/75bf91b8a28bfc3f8417e58d1b78bd112ffcf6de\"\u003e\u003ccode\u003e75bf91b\u003c/code\u003e\u003c/a\u003e [async] Adding access to cluster client's nodes_manager and set_response_call...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/abf5bcb2ded3f393cd3d74803b058df325e3755c\"\u003e\u003ccode\u003eabf5bcb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3985\"\u003e#3985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b0303bf90792cfdfff951f446c71ec7baf83e0e\"\u003e\u003ccode\u003e5b0303b\u003c/code\u003e\u003c/a\u003e fix: replace 3 bare except clauses with except Exception (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e9fba8689f74e4aea45c8b9d75e517e29c54a76a\"\u003e\u003ccode\u003ee9fba86\u003c/code\u003e\u003c/a\u003e Added OTel instrumentation and metrics export for async client (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3977\"\u003e#3977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7ce513d262288fb2d79a1d59dff0cf5ff0cb13b0\"\u003e\u003ccode\u003e7ce513d\u003c/code\u003e\u003c/a\u003e fix(connection): Ensure we have an initialized protocol in connection (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8e3a5b2f10677c58951fd04f79db1802f79a9bea\"\u003e\u003ccode\u003e8e3a5b2\u003c/code\u003e\u003c/a\u003e remove remaining imports of typing_extensions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/5b46430e23748d85140b143cbce02523e284482e\"\u003e\u003ccode\u003e5b46430\u003c/code\u003e\u003c/a\u003e Hold references to ClusterNode disconnect task (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3826\"\u003e#3826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.2.0...v7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\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/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk[fastapi]` from 2.53.0 to 2.55.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[fastapi]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring spans 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to spans 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool spans 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration 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/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\u003c/code\u003e 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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\u003c/code\u003e 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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\u003e\n\u003c!-- 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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk[fastapi]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring spans 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\u003c/code\u003e 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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to spans 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool spans 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration 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/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\u003c/code\u003e 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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\u003c/code\u003e 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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/038a429023b9092503f65d554e7c2ad230bba542\"\u003e\u003ccode\u003e038a429\u003c/code\u003e\u003c/a\u003e release: 2.55.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b29c4bb5ed300d63b4f78eeb1c69c1c6e0f9ec9b\"\u003e\u003ccode\u003eb29c4bb\u003c/code\u003e\u003c/a\u003e fix(logging): Fix deadlock in log batcher (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5684\"\u003e#5684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b905cd3297fd824fc0f7ce41c9d67a4e85b43fc2\"\u003e\u003ccode\u003eb905cd3\u003c/code\u003e\u003c/a\u003e feat(anthropic): Record finish reasons in AI monitoring spans (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5678\"\u003e#5678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6ea663f71d404bf7a261f31a22602ed85fb93544\"\u003e\u003ccode\u003e6ea663f\u003c/code\u003e\u003c/a\u003e fix(langchain): Wrap finish_reason in array for gen_ai span attribute (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5666\"\u003e#5666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6345af9598de0dd730e85048e5fc68733bbd8b98\"\u003e\u003ccode\u003e6345af9\u003c/code\u003e\u003c/a\u003e fix(ai): Truncate list-based message content in AI monitoring (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5631\"\u003e#5631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/01346a9f2d6c900fed8d830c31143a6c089f0fc2\"\u003e\u003ccode\u003e01346a9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/create-github-app-token from 2.2.1 to 3.0.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5667\"\u003e#5667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b946246062956e5228329b3a140c1ad3891800b\"\u003e\u003ccode\u003e0b94624\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/testing-ai-sdk-integrations from 285c012e522f2415...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/39cf94d458093392c78f92aa167f566827b0f30d\"\u003e\u003ccode\u003e39cf94d\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/craft from 2.23.1 to 2.24.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5668\"\u003e#5668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/ada153bcdc96813064bacccbc523d66cc1368dfe\"\u003e\u003ccode\u003eada153b\u003c/code\u003e\u003c/a\u003e ref: Add cont profiling support to span first (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b5f4f85b7d7fd93a6f8dc7932e6b3599c7b3da9\"\u003e\u003ccode\u003e0b5f4f8\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (03/16) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.53.0...2.55.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers[postgres,redis]` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers[postgres,redis]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers[postgres,redis]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.4 to 7.13.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\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/coveragepy/coveragepy/commit/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\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.2 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\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.7/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.7/ruff-installer.ps1 | iex\u0026quot;\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.2...0.15.7\"\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/MK023/TorinoParking/pull/47","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MK023%2FTorinoParking/issues/47","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/47/packages"}},{"old_version":"4.14.1","new_version":"4.14.2","update_type":"patch","path":null,"pr_created_at":"2026-03-19T22:56:24.000Z","version_change":"4.14.1 → 4.14.2","issue":{"uuid":"4104669446","node_id":"PR_kwDOK-Z_Yc7L_cid","number":15,"state":"open","title":"chore(deps-dev): bump the development-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-19T22:56:24.000Z","updated_at":"2026-03-19T23:13:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"development-dependencies","update_count":3,"packages":[{"name":"ruff","old_version":"0.15.5","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"prek","old_version":"0.3.5","new_version":"0.3.6","repository_url":"https://github.com/j178/prek"},{"name":"testcontainers","old_version":"4.14.1","new_version":"4.14.2","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the development-dependencies group with 3 updates: [ruff](https://github.com/astral-sh/ruff), [prek](https://github.com/j178/prek) and [testcontainers](https://github.com/testcontainers/testcontainers-python).\n\nUpdates `ruff` from 0.15.5 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\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.7/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.7/ruff-installer.ps1 | iex\u0026quot;\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.5 to 0.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-16.\u003c/p\u003e\n\u003ch3\u003eCall for testing\u003c/h3\u003e\n\u003cp\u003eIf you run prek in GitHub CI, please try \u003ca href=\"https://github.com/j178/prek-action/releases/tag/v2.0.0-beta.4\"\u003e\u003ccode\u003ej178/prek-action@v2.0.0-beta.4\u003c/code\u003e\u003c/a\u003e. The 2.0 beta series rewrites the action in TypeScript, adds semver range support for \u003ccode\u003eprek-version\u003c/code\u003e, and verifies downloaded prek archives with published SHA-256 checksums. We'd appreciate any bug reports.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow selectors for hook ids containing colons (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1782\"\u003e#1782\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eprek install-hooks\u003c/code\u003e to \u003ccode\u003eprek prepare-hooks\u003c/code\u003e and \u003ccode\u003eprek install --install-hooks\u003c/code\u003e to \u003ccode\u003eprek install --prepare-hooks\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1766\"\u003e#1766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry auth-failed repo clones with terminal prompts enabled (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize \u003ccode\u003edetect_private_key\u003c/code\u003e by chunked reading and using aho-corasick (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003efix_byte_order_marker\u003c/code\u003e by shifting file contents in place (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign stage defaulting behavior with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake sure child output is drained in the PTY subprocess (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1768\"\u003e#1768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(golang): use \u003ccode\u003eGOTOOLCHAIN=local\u003c/code\u003e when probing system go (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisambiguate “hook” terminology by renaming \u0026quot;Git hooks\u0026quot; to \u0026quot;Git shims\u0026quot; (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1776\"\u003e#1776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument compatibility with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1767\"\u003e#1767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate configuration.md with TOML 1.1 notes (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1764\"\u003e#1764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync latest identify tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1798\"\u003e#1798\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/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pcastellazzi\"\u003e\u003ccode\u003e@​pcastellazzi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/deadnews\"\u003e\u003ccode\u003e@​deadnews\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.3.6\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://github.com/j178/prek/releases/download/v0.3.6/prek-installer.sh | sh\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-16.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow selectors for hook ids containing colons (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1782\"\u003e#1782\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eprek install-hooks\u003c/code\u003e to \u003ccode\u003eprek prepare-hooks\u003c/code\u003e and \u003ccode\u003eprek install --install-hooks\u003c/code\u003e to \u003ccode\u003eprek install --prepare-hooks\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1766\"\u003e#1766\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry auth-failed repo clones with terminal prompts enabled (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize \u003ccode\u003edetect_private_key\u003c/code\u003e by chunked reading and using aho-corasick (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003efix_byte_order_marker\u003c/code\u003e by shifting file contents in place (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign stage defaulting behavior with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake sure child output is drained in the PTY subprocess (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1768\"\u003e#1768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(golang): use \u003ccode\u003eGOTOOLCHAIN=local\u003c/code\u003e when probing system go (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisambiguate “hook” terminology by renaming \u0026quot;Git hooks\u0026quot; to \u0026quot;Git shims\u0026quot; (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1776\"\u003e#1776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument compatibility with pre-commit (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1767\"\u003e#1767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate configuration.md with TOML 1.1 notes (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1764\"\u003e#1764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync latest identify tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1798\"\u003e#1798\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/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pcastellazzi\"\u003e\u003ccode\u003e@​pcastellazzi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/deadnews\"\u003e\u003ccode\u003e@​deadnews\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\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/j178/prek/commit/dd53c3d715e3a94dc7ecc947891b9887371e21fe\"\u003e\u003ccode\u003edd53c3d\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.6 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1811\"\u003e#1811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/ae0f62f07bda7c6b57c5ae85ec58b4d2821866aa\"\u003e\u003ccode\u003eae0f62f\u003c/code\u003e\u003c/a\u003e Bump prek-action to v2.0.0-beta.3 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1810\"\u003e#1810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/34641f1e5d1ba673cdd573586684296c6636e0c9\"\u003e\u003ccode\u003e34641f1\u003c/code\u003e\u003c/a\u003e fix(golang): use \u003ccode\u003eGOTOOLCHAIN=local\u003c/code\u003e when probing system go\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/d1f84d5a2bfd74a5e5155cc69f4fe83e979056e3\"\u003e\u003ccode\u003ed1f84d5\u003c/code\u003e\u003c/a\u003e Update MSRV to v1.92.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1806\"\u003e#1806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/b4a252fa34c43c7e6a430ce97b2e7d5f783e182b\"\u003e\u003ccode\u003eb4a252f\u003c/code\u003e\u003c/a\u003e Sync latest identify tags (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1798\"\u003e#1798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/804eff2fb6b27c2055f391757a0b76dfd4f74451\"\u003e\u003ccode\u003e804eff2\u003c/code\u003e\u003c/a\u003e Fix minimumReleaseAge for MSRV (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1809\"\u003e#1809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/56f76237d6d8b27a203a91e58b4213d9c82c885f\"\u003e\u003ccode\u003e56f7623\u003c/code\u003e\u003c/a\u003e Update GitHub Actions (major) (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1808\"\u003e#1808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/5c268afebbc4ea9bb87291ebd70fe1857e9b88d3\"\u003e\u003ccode\u003e5c268af\u003c/code\u003e\u003c/a\u003e Update Rust crate toml to v1.0.6 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1803\"\u003e#1803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/88c8de2f44f4bb567e022b62e51ede902a8208d7\"\u003e\u003ccode\u003e88c8de2\u003c/code\u003e\u003c/a\u003e Update Rust crate toml_edit to v0.25.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1804\"\u003e#1804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/fe694c56161dc3005521b61411ddf65eaabe6d53\"\u003e\u003ccode\u003efe694c5\u003c/code\u003e\u003c/a\u003e Update pre-commit hook crate-ci/typos to v1.44.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1807\"\u003e#1807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.5...v0.3.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 4.14.1 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2\"\u003e4.14.2\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekafka:\u003c/strong\u003e allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e44dd40b\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/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377\"\u003e\u003ccode\u003e5c67efb\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.2 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3\"\u003e\u003ccode\u003e44dd40b\u003c/code\u003e\u003c/a\u003e feat(kafka): allow configurable listener name and security protocol (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a\"\u003e\u003ccode\u003ea78475a\u003c/code\u003e\u003c/a\u003e chore(main): Migrate to uv (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.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/adriantomas/pydamodb/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriantomas%2Fpydamodb/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"4.14.0","new_version":"4.14.1","update_type":"patch","path":null,"pr_created_at":"2026-03-01T12:22:49.000Z","version_change":"4.14.0 → 4.14.1","issue":{"uuid":"4007062427","node_id":"PR_kwDOARnX5M7HHp5S","number":1010,"state":"open","title":"Bump testcontainers from 4.14.0 to 4.14.1","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-03-01T12:22:49.000Z","updated_at":"2026-03-01T12:33:22.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"testcontainers","old_version":"4.14.0","new_version":"4.14.1","repository_url":"https://github.com/testcontainers/testcontainers-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps [testcontainers](https://github.com/testcontainers/testcontainers-python) from 4.14.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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\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/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003e\u003ccode\u003ebe4d09e\u003c/code\u003e\u003c/a\u003e fix: Allow passing in a custom wait strategy string in MySQL, Cassandra, Kafk...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=testcontainers\u0026package-manager=pip\u0026previous-version=4.14.0\u0026new-version=4.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/aio-libs/aiodocker/pull/1010","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aio-libs%2Faiodocker/issues/1010","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1010/packages"}},{"old_version":"3.7.1","new_version":"4.14.1","update_type":"major","path":"/src/Plant/BackEnd","pr_created_at":"2026-02-26T10:41:45.000Z","version_change":"3.7.1 → 4.14.1","issue":{"uuid":"3994732613","node_id":"PR_kwDOQtRsU87GgCyT","number":799,"state":"closed","title":"chore(deps): bump the plant-python-deps group in /src/Plant/BackEnd with 49 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-02-28T11:33:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-26T10:41:45.000Z","updated_at":"2026-02-28T11:33:35.000Z","time_to_close":175902,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"plant-python-deps","update_count":49,"packages":[{"name":"pytest","old_version":"7.4.4","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"0.23.3","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"4.1.0","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-benchmark","old_version":"4.0.0","new_version":"5.2.3","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"testcontainers","old_version":"3.7.1","new_version":"4.14.1","repository_url":"https://github.com/testcontainers/testcontainers-python"},{"name":"sqlalchemy","old_version":"2.0.25","new_version":"2.0.47","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2-binary","old_version":"2.9.9","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pgvector","old_version":"0.2.4","new_version":"0.4.2","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"pydantic","old_version":"2.5.0","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.1.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"cryptography","old_version":"42.0.2","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"redis","old_version":"5.0.1","new_version":"7.2.1","repository_url":"https://github.com/redis/redis-py"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-jose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/mpdavis/python-jose"},{"name":"mypy","old_version":"1.8.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.7.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"hypothesis","old_version":"6.100.1","new_version":"6.151.9","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"pytest-bdd","old_version":"7.1.2","new_version":"8.1.0","repository_url":"https://github.com/pytest-dev/pytest-bdd"},{"name":"fastapi","old_version":"0.117.1","new_version":"0.133.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.27.0","new_version":"0.41.0"},{"name":"uvloop","old_version":"0.19.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"httptools","old_version":"0.6.1","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"websockets","old_version":"12.0","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"watchfiles","old_version":"0.21.0","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"email-validator","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"asyncpg","old_version":"0.29.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"greenlet","old_version":"3.0.3","new_version":"3.3.2","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"alembic","old_version":"1.13.1","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"hiredis","old_version":"2.3.2","new_version":"3.3.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"apscheduler","old_version":"3.10.4","new_version":"3.11.2","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"celery","old_version":"5.3.6","new_version":"5.6.2"},{"name":"temporalio","old_version":"1.5.1","new_version":"1.23.0","repository_url":"https://github.com/temporalio/sdk-python"},{"name":"python-jose","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/mpdavis/python-jose"},{"name":"google-auth","old_version":"2.37.0","new_version":"2.48.0"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"tenacity","old_version":"8.2.3","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"pytest-mock","old_version":"3.12.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"faker","old_version":"40.1.2","new_version":"40.5.1","repository_url":"https://github.com/joke2k/faker"},{"name":"black","old_version":"24.3.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.0.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"prometheus-client","old_version":"0.19.0","new_version":"0.24.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"opentelemetry-api","old_version":"1.22.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.22.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-gcp-trace","old_version":"1.6.0","new_version":"1.11.0","repository_url":"https://github.com/GoogleCloudPlatform/opentelemetry-operations-python"},{"name":"opentelemetry-propagator-gcp","old_version":"1.6.0","new_version":"1.11.0","repository_url":"https://github.com/GoogleCloudPlatform/opentelemetry-operations-python"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.43b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.43b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.43b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":"/src/Plant/BackEnd","ecosystem":"pip"},"body":"Bumps the plant-python-deps group in /src/Plant/BackEnd with 49 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `7.4.4` | `9.0.2` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.23.3` | `1.3.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `4.1.0` | `7.0.0` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `4.0.0` | `5.2.3` |\n| [testcontainers](https://github.com/testcontainers/testcontainers-python) | `3.7.1` | `4.14.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.25` | `2.0.47` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.9` | `2.9.11` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.2.4` | `0.4.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.5.0` | `2.12.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.1.0` | `2.13.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `42.0.2` | `46.0.5` |\n| [redis](https://github.com/redis/redis-py) | `5.0.1` | `7.2.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-jose](https://github.com/mpdavis/python-jose) | `3.3.0` | `3.5.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.19.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.6` | `1.9.4` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.100.1` | `6.151.9` |\n| [pytest-bdd](https://github.com/pytest-dev/pytest-bdd) | `7.1.2` | `8.1.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.117.1` | `0.133.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.27.0` | `0.41.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.19.0` | `0.22.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.1` | `0.7.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `12.0` | `16.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `0.21.0` | `1.1.1` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.1.0` | `2.3.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.29.0` | `0.31.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.3` | `3.3.2` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.1` | `1.18.4` |\n| [hiredis](https://github.com/redis/hiredis-py) | `2.3.2` | `3.3.0` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.10.4` | `3.11.2` |\n| [celery[redis]](https://github.com/celery/celery) | `5.3.6` | `5.6.2` |\n| [temporalio](https://github.com/temporalio/sdk-python) | `1.5.1` | `1.23.0` |\n| [python-jose[cryptography]](https://github.com/mpdavis/python-jose) | `3.4.0` | `3.5.0` |\n| [google-auth[requests]](https://github.com/googleapis/google-auth-library-python) | `2.37.0` | `2.48.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [tenacity](https://github.com/jd/tenacity) | `8.2.3` | `9.1.4` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.12.0` | `3.15.1` |\n| [faker](https://github.com/joke2k/faker) | `40.1.2` | `40.5.1` |\n| [black](https://github.com/psf/black) | `24.3.0` | `26.1.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.19.0` | `0.24.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.22.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.22.0` | `1.39.1` |\n| [opentelemetry-exporter-gcp-trace](https://github.com/GoogleCloudPlatform/opentelemetry-operations-python) | `1.6.0` | `1.11.0` |\n| [opentelemetry-propagator-gcp](https://github.com/GoogleCloudPlatform/opentelemetry-operations-python) | `1.6.0` | `1.11.0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.43b0` | `0.60b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.43b0` | `0.60b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.43b0` | `0.60b1` |\n\nUpdates `pytest` from 7.4.4 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/7.4.4...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 0.23.3 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/pytest-dev/pytest-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio 1.3.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.3.0\"\u003e1.3.0\u003c/a\u003e - 2025-11-10\u003c/h1\u003e\n\u003ch2\u003eRemoved\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1278\"\u003e#1278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pytest 9 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1279\"\u003e#1279\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTested Python versions include free threaded Python 3.14t (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1274\"\u003e#1274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTests are run in the same pytest process, instead of spawning a subprocess with \u003ccode\u003epytest.Pytester.runpytest_subprocess\u003c/code\u003e. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.2.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.2.0\"\u003e1.2.0\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e--asyncio-debug\u003c/code\u003e CLI option and \u003ccode\u003easyncio_debug\u003c/code\u003e configuration option to enable asyncio debug mode for the default event loop. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003epytest.UsageError\u003c/code\u003e for invalid configuration values of \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e and \u003ccode\u003easyncio_default_test_loop_scope\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1189\"\u003e#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCompatibility with the Pyright type checker (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRuntimeError: There is no current event loop in thread 'MainThread'\u003c/code\u003e when any test unsets the event loop (such as when using \u003ccode\u003easyncio.run\u003c/code\u003e and \u003ccode\u003easyncio.Runner\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1177\"\u003e#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecation warning when decorating an asynchronous fixture with \u003ccode\u003e@pytest.fixture\u003c/code\u003e in [strict]{.title-ref} mode. The warning message now refers to the correct package. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the minimum required version of tox to v4.28. This change is only relevant if you use the \u003ccode\u003etox.ini\u003c/code\u003e file provided by pytest-asyncio to run tests.\u003c/li\u003e\n\u003cli\u003eExtend dependency on typing-extensions\u0026gt;=4.12 from Python\u0026lt;3.10 to Python\u0026lt;3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio 1.1.1\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/v1.1.1\"\u003ev1.1.1\u003c/a\u003e - 2025-09-12\u003c/h1\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cp\u003e- Addresses a build problem with setuptoos-scm \u0026gt;= 9 caused by invalid setuptools-scm configuration in pytest-asyncio. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1192\"\u003e#1192\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003epytest-asyncio 1.1.0\u003c/h2\u003e\n\u003ch1\u003eAdded\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePropagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/127\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancellation of tasks when the \u003ccode\u003eloop_scope\u003c/code\u003e ends (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/200\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarning when the current event loop is closed by a test\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixed\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/pytest-dev/pytest-asyncio/commit/2e9695fcf8c5c514f30f57b7d14ab83846357b96\"\u003e\u003ccode\u003e2e9695f\u003c/code\u003e\u003c/a\u003e docs: Compile changelog for v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/dd0e9ba3fa672fd6bf375004319742f8d3a50e12\"\u003e\u003ccode\u003edd0e9ba\u003c/code\u003e\u003c/a\u003e docs: Reference correct issue in news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4c31abe5bf46bca3c9bdc7b18405f3deba4145d0\"\u003e\u003ccode\u003e4c31abe\u003c/code\u003e\u003c/a\u003e Build(deps): Bump nh3 from 0.3.1 to 0.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/13e94770d7bb146c329ae0e02486c0a6b38f3772\"\u003e\u003ccode\u003e13e9477\u003c/code\u003e\u003c/a\u003e Link to migration guides from changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4d2cf3c36f47d7c4d563d401cdf229b35da34fbe\"\u003e\u003ccode\u003e4d2cf3c\u003c/code\u003e\u003c/a\u003e tests: handle Python 3.14 DefaultEventLoopPolicy deprecation warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ee3549b6efb729b934e370e2be8040b25b034010\"\u003e\u003ccode\u003eee3549b\u003c/code\u003e\u003c/a\u003e test: Remove obsolete test for the event_loop fixture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/7a67c82c5ae548f0968438e9dfa0f282d51c4597\"\u003e\u003ccode\u003e7a67c82\u003c/code\u003e\u003c/a\u003e tests: Fix failing test by preventing warning conversion to error.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a17b689a750d05b6fc9369f5fb2b06baaba83536\"\u003e\u003ccode\u003ea17b689\u003c/code\u003e\u003c/a\u003e test: add pytest config to isolated test directories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/18afc9df5a3153dc1fbdc4e11a56517ef95480df\"\u003e\u003ccode\u003e18afc9d\u003c/code\u003e\u003c/a\u003e fix(tests): replace runpytest_subprocess with runpytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/cdc6bd1de75b4738289eafd546f5e27a0bfd3b41\"\u003e\u003ccode\u003ecdc6bd1\u003c/code\u003e\u003c/a\u003e Add support for pytest 9 and drop Python 3.9 support\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.3...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 4.1.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0 (2025-09-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for subprocesses measurement.\u003c/p\u003e\n\u003cp\u003eIt was a feature added long time ago when coverage lacked a nice way to measure subprocesses created in tests.\nIt relied on a \u003ccode\u003e.pth\u003c/code\u003e file, there was no way to opt-out and it created bad interations\nwith \u003ccode\u003ecoverage's new patch system \u0026lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch\u0026gt;\u003c/code\u003e_ added\nin \u003ccode\u003e7.10 \u0026lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003eTo migrate to this release you might need to enable the suprocess patch, example for \u003ccode\u003e.coveragerc\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003e.. code-block:: ini\u003c/p\u003e\n\u003cp\u003e[run]\npatch = subprocess\u003c/p\u003e\n\u003cp\u003eThis release also requires at least coverage 7.10.6.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSwitched packaging to have metadata completely in \u003ccode\u003epyproject.toml\u003c/code\u003e and use \u003ccode\u003ehatchling \u0026lt;https://pypi.org/project/hatchling/\u0026gt;\u003c/code\u003e_ for\nbuilding.\nContributed by Ofek Lev in \u003ccode\u003e[#551](https://github.com/pytest-dev/pytest-cov/issues/551) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/551\u0026gt;\u003c/code\u003e_\nwith some extras in \u003ccode\u003e[#716](https://github.com/pytest-dev/pytest-cov/issues/716) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/716\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved some not really necessary testing deps like \u003ccode\u003esix\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.3.0 (2025-09-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for markdown reports.\nContributed by Marcos Boger in \u003ccode\u003e[#712](https://github.com/pytest-dev/pytest-cov/issues/712) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/712\u0026gt;\u003c/code\u003e_\nand \u003ccode\u003e[#714](https://github.com/pytest-dev/pytest-cov/issues/714) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/714\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed some formatting issues in docs.\nAnonymous contribution in \u003ccode\u003e[#706](https://github.com/pytest-dev/pytest-cov/issues/706) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/706\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.2.1 (2025-06-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a version requirement for pytest's pluggy dependency (1.2.0, released 2023-06-21) that has the required new-style hookwrapper API.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved deprecated license classifier (packaging).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisabled coverage warnings in two more situations where they have no value:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;module-not-measured\u0026quot; in workers\u003c/li\u003e\n\u003cli\u003e\u0026quot;already-imported\u0026quot; in subprocesses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.2.0 (2025-06-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe plugin now adds 3 rules in the filter warnings configuration to prevent common coverage warnings being raised as obscure errors::\u003c/p\u003e\n\u003cp\u003edefault:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\nonce::PytestCovWarning\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-cov/commit/224d8964caad90074a8cf6dc8720b8f70f31629b\"\u003e\u003ccode\u003e224d896\u003c/code\u003e\u003c/a\u003e Bump version: 6.3.0 → 7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/73424e3999f865eac72e27f09d5fe11b9703cfd6\"\u003e\u003ccode\u003e73424e3\u003c/code\u003e\u003c/a\u003e Cleanup the docs a bit.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/36f1cc2967831dbd4c8aa70086fc86dc495f8b9a\"\u003e\u003ccode\u003e36f1cc2\u003c/code\u003e\u003c/a\u003e Bump pins in template.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f299c590a63a48e51e3ae949993dc7bb1f1d480d\"\u003e\u003ccode\u003ef299c59\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/25f0b2e0cdbc345c0d3e49170f7a328c3e0d805f\"\u003e\u003ccode\u003e25f0b2e\u003c/code\u003e\u003c/a\u003e Update docs/config.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/bb23eacc5531fb8f499213d8420407e0d72f88e3\"\u003e\u003ccode\u003ebb23eac\u003c/code\u003e\u003c/a\u003e Improve configuration docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/a19531e91e1ab753ccf648a2d9bab08a6fddebb9\"\u003e\u003ccode\u003ea19531e\u003c/code\u003e\u003c/a\u003e Switch from build/pre-commit to uv/prek - this should make this faster.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/82f999391073f2fb8ae422af452602f310086a2a\"\u003e\u003ccode\u003e82f9993\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/211b5cd41c29916bc643b4a11b00578ba4fd6fe8\"\u003e\u003ccode\u003e211b5cd\u003c/code\u003e\u003c/a\u003e Fix links.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/97aadd74bcbc00a2078d240e8fe871dd62b83d80\"\u003e\u003ccode\u003e97aadd7\u003c/code\u003e\u003c/a\u003e Update some ci config, reformat and apply some lint fixes.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-benchmark` from 4.0.0 to 5.2.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ionelmc/pytest-benchmark/blob/master/CHANGELOG.rst\"\u003epytest-benchmark's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.3 (2025-11-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for pytest 9.0.\u003c/li\u003e\n\u003cli\u003eMoved the README.rst/CHANGELOG.rst concatenation from setup.py to pyproject.toml.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.2.2 (2025-11-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed auto-disable to work with newer xdist (pytest-benchmark auto disables benchmarks if xdist is enabled by design).\nContributed by Thomas B. Brunner in \u003ccode\u003e[#294](https://github.com/ionelmc/pytest-benchmark/issues/294) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/294\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.2.1 (2025-11-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd markers so pytest doesn't try to assert-rewrite the plugin internals\n(fixes those \u003ccode\u003epytest.PytestAssertRewriteWarning: Module already imported so cannot be rewritten; pytest_benchmark\u003c/code\u003e warnings).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.2.0 (2025-10-30)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for a per-round \u003ccode\u003eteardown\u003c/code\u003e function to pedantic mode.\nContributed Patrick Winter by \u003ccode\u003e[#264](https://github.com/ionelmc/pytest-benchmark/issues/264) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/264\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e--benchmark-time-unit\u003c/code\u003e option.\nContributed by Tony Kuo in \u003ccode\u003e[#281](https://github.com/ionelmc/pytest-benchmark/issues/281) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/281\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed deprecated hook examples in docstrings.\nContributed by Ali-Akber Saifee in \u003ccode\u003e[#284](https://github.com/ionelmc/pytest-benchmark/issues/284) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/284\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003e--benchmark-compare-fail\u003c/code\u003e to accept percentages higher than 100%.\nContributed by Ben Avrahami in \u003ccode\u003e[#280](https://github.com/ionelmc/pytest-benchmark/issues/280) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/280\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded minimal typing support.\nContributed by Sorin Sbarnea in \u003ccode\u003e[#290](https://github.com/ionelmc/pytest-benchmark/issues/290) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/290\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed support for Python 3.9.\nContributed by Enno Gotthold in \u003ccode\u003e[#291](https://github.com/ionelmc/pytest-benchmark/issues/291) \u0026lt;https://github.com/ionelmc/pytest-benchmark/pull/291\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eReplaced the complicated and broken code of \u003ccode\u003epytest_benchmark.utils.clonefunc\u003c/code\u003e with a simple return of the input.\nThat function was supposed to allow benchmarking with the cost of PyPy JIT included but it's a hassle to maintain.\u003c/li\u003e\n\u003cli\u003eMoved the instrumentation pause outside the round loops (in addition to tracing, profiling is paused too).\nPedantic mode will keep doing this per round (as the user manually controls the round count).\nThis is necessary because in some scenarios setting and unsetting the tracer too much will overflow an internal counter\n(found to cause \u0026quot;OverflowError: events set too many times\u0026quot; at least on Python 3.13).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.1.0 (2024-10-30)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed broken hooks handling on pytest 8.1 or later (the \u003ccode\u003eTypeError: import_path() missing 1 required keyword-only argument: 'consider_namespace_packages'\u003c/code\u003e issue).\nUnfortunately this sets the minimum supported pytest version to 8.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.1 (2024-10-30)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bad fixture check that broke down then \u003ccode\u003enbmake \u0026lt;https://pypi.org/project/nbmake/\u0026gt;\u003c/code\u003e_ was enabled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/b857483dd8e8a875f3aa040bd0054847ad657291\"\u003e\u003ccode\u003eb857483\u003c/code\u003e\u003c/a\u003e Bump version: 5.2.2 → 5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/7f5abf98bb3212339d964e9a2621998c032a98f7\"\u003e\u003ccode\u003e7f5abf9\u003c/code\u003e\u003c/a\u003e Add a note about the readme.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/b8e5f5380f04a9ae26aa571c1c41a3671e2ac3bb\"\u003e\u003ccode\u003eb8e5f53\u003c/code\u003e\u003c/a\u003e Fix bad wrap.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/931d50ff1bb16c392f817801ad246eb27f55d4c5\"\u003e\u003ccode\u003e931d50f\u003c/code\u003e\u003c/a\u003e Add back some escapes. Oops.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/d5c2f7ef9d0bbd67d8bafac1e2a454c8aa95af10\"\u003e\u003ccode\u003ed5c2f7e\u003c/code\u003e\u003c/a\u003e Add support for pytest 9.0. Fixes \u003ca href=\"https://redirect.github.com/ionelmc/pytest-benchmark/issues/295\"\u003e#295\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/9a3888ad0474c0bb0e56c86f87a27d24ecc6a55a\"\u003e\u003ccode\u003e9a3888a\u003c/code\u003e\u003c/a\u003e Move readme+changelog extraction to static pyproject config.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/d34bf73c6bab8c11c660291f62a20ff0c004e241\"\u003e\u003ccode\u003ed34bf73\u003c/code\u003e\u003c/a\u003e Bump version: 5.2.1 → 5.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/cf2ac340f49518c6f89eb1de8fa9c68275ef6de6\"\u003e\u003ccode\u003ecf2ac34\u003c/code\u003e\u003c/a\u003e Bump prek.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/8bfc327c69997564eff09dfaa4a2fcf269545d36\"\u003e\u003ccode\u003e8bfc327\u003c/code\u003e\u003c/a\u003e Improve formatting (docutils chokes on those arguments with colons and bracke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ionelmc/pytest-benchmark/commit/190b487045c4994fd51b7b7e04b0e02b5b34a41c\"\u003e\u003ccode\u003e190b487\u003c/code\u003e\u003c/a\u003e Prefix all headings with letters to allow docutils or whatever generate stabl...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ionelmc/pytest-benchmark/compare/v4.0.0...v5.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `testcontainers` from 3.7.1 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/testcontainers/testcontainers-python/releases\"\u003etestcontainers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etestcontainers: v4.14.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.14.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003epython 3.14 is now supported!\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003etestcontainers: v4.13.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Fix issues with doctests (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/893\"\u003e#893\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2e4d80ade5a2048c8bc79d7a2438004b8e0954e4\"\u003e2e4d80a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e waiting improvements + remove decorators in core (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/894\"\u003e#894\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f93f379380a9de769fe6a1e1168622865cdf613d\"\u003ef93f379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/889\"\u003e#889\u003c/a\u003e by changing the annotated return type of \u003ccode\u003ewaiting_for\u003c/code\u003e to \u003ccode\u003eSelf\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/890\"\u003e#890\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/fe941b17bb97aad15dc4844996f166c9308f4476\"\u003efe941b1\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/testcontainers/testcontainers-python/blob/main/CHANGELOG.md\"\u003etestcontainers's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1\"\u003e4.14.1\u003c/a\u003e (2026-01-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow passing in a custom wait strategy string in MySQL, Cassandra, Kafka and Trino (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/953\"\u003e#953\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003ebe4d09e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompose:\u003c/strong\u003e expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e183e1aa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e bring back dind tests (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e7337266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003ee323317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enats:\u003c/strong\u003e add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e49c9af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003ef690e88\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/860\"\u003e#860\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0\"\u003e4.14.0\u003c/a\u003e (2026-01-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ExecWaitStrategy and migrate Postgres from deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/935\"\u003e#935\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06\"\u003e2d9eee3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd ruff to deps (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/919\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d\"\u003e5853d32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecassandra,mysqk,kafka:\u003c/strong\u003e Use wait strategy instead of deprecated wait_for_logs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/945\"\u003e#945\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003eb7791b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e recreate poetry lockfile with latest versions of libraries (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/946\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03\"\u003e9a97385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eelasticsearch:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/915\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627\"\u003ec785ecd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e minio client requires kwargs now (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/933\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62\"\u003e37f5902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eminio:\u003c/strong\u003e Use wait strategy instead of deprecated decorator (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/899\"\u003e#899\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3\"\u003efebccb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3\"\u003e4.13.3\u003c/a\u003e (2025-11-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edo not require consumer of library to state nonsupport for py4 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/912\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c\"\u003ef608df9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e Update dependencies for docs (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/900\"\u003e#900\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c\"\u003e3f66784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport python 3.14!!! - (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/917\"\u003e#917\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6\"\u003ef76e982\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2\"\u003e4.13.2\u003c/a\u003e (2025-10-07)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e Fix issues with doctests (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/893\"\u003e#893\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/2e4d80ade5a2048c8bc79d7a2438004b8e0954e4\"\u003e2e4d80a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e waiting improvements + remove decorators in core (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/894\"\u003e#894\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f93f379380a9de769fe6a1e1168622865cdf613d\"\u003ef93f379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/889\"\u003e#889\u003c/a\u003e by changing the annotated return type of \u003ccode\u003ewaiting_for\u003c/code\u003e to \u003ccode\u003eSelf\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/890\"\u003e#890\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/fe941b17bb97aad15dc4844996f166c9308f4476\"\u003efe941b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emongo:\u003c/strong\u003e mongo start waiting forever for old mongo versions (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/783\"\u003e#783\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/13886120e9cb72666a40ea3691ea13e584805918\"\u003e1388612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eredpanda:\u003c/strong\u003e copy the startup script to a path that can be written … (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/867\"\u003e#867\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e6b976de43fc6fe90d7131fd25983f9c6b08429b\"\u003ee6b976d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etrino:\u003c/strong\u003e Remove deprecated class and decorator from Trino container (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/895\"\u003e#895\u003c/a\u003e) (\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/bb646e903236a1df72bc38dbb47d1dba95527198\"\u003ebb646e9\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/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c\"\u003e\u003ccode\u003e17eb0b0\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.1 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/954\"\u003e#954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8\"\u003e\u003ccode\u003ef690e88\u003c/code\u003e\u003c/a\u003e fix: Support Elasticsearch 9.x (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a\"\u003e\u003ccode\u003e15e99ee\u003c/code\u003e\u003c/a\u003e add modifications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5\"\u003e\u003ccode\u003e7337266\u003c/code\u003e\u003c/a\u003e fix(core): bring back dind tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4\"\u003e\u003ccode\u003e49c9af8\u003c/code\u003e\u003c/a\u003e fix(nats): add support for jetstream (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/938\"\u003e#938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e\"\u003e\u003ccode\u003ee323317\u003c/code\u003e\u003c/a\u003e fix(core): Use WaitStrategy internally for wait_for function (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/942\"\u003e#942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f\"\u003e\u003ccode\u003e183e1aa\u003c/code\u003e\u003c/a\u003e fix(compose): expose useful compose options (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/951\"\u003e#951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b\"\u003e\u003ccode\u003ebe4d09e\u003c/code\u003e\u003c/a\u003e fix: Allow passing in a custom wait strategy string in MySQL, Cassandra, Kafk...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/d7953b89208cdfbb1a19692dd9bf95b60ecfe4ac\"\u003e\u003ccode\u003ed7953b8\u003c/code\u003e\u003c/a\u003e chore(main): release testcontainers 4.14.0 (\u003ca href=\"https://redirect.github.com/testcontainers/testcontainers-python/issues/921\"\u003e#921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9\"\u003e\u003ccode\u003eb7791b9\u003c/code\u003e\u003c/a\u003e fix(cassandra,mysqk,kafka): Use wait strategy instead of deprecated wait_for_...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/testcontainers/testcontainers-python/compare/v3.7.1...testcontainers-v4.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.25 to 2.0.47\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.47\u003c/h1\u003e\n\u003cp\u003eReleased: February 24, 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 when using ORM mappings with Python 3.14's \u003ca href=\"https://peps.python.org/pep-0649\"\u003ePEP 649\u003c/a\u003e feature\nthat no longer requires \u0026quot;future annotations\u0026quot;, where the ORM's introspection\nof the \u003ccode\u003e__init__\u003c/code\u003e method of mapped classes would fail if non-present\nidentifiers in annotations were present.  The vendored \u003ccode\u003egetfullargspec()\u003c/code\u003e\nmethod has been amended to use \u003ccode\u003eFormat.FORWARDREF\u003c/code\u003e under Python 3.14 to\nprevent resolution of names that aren't present.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13104\"\u003e#13104\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e The connection object returned by \u003ccode\u003e_engine.Engine.raw_connection()\u003c/code\u003e\nnow supports the context manager protocol, automatically returning the\nconnection to the pool when exiting the context.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13116\"\u003e#13116\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[postgresql] [bug]\u003c/strong\u003e Fixed an issue in the PostgreSQL dialect where foreign key constraint\nreflection would incorrectly swap or fail to capture \u003ccode\u003eonupdate\u003c/code\u003e and\n\u003ccode\u003eondelete\u003c/code\u003e values when these clauses appeared in a different order than\nexpected in the constraint definition. This issue primarily affected\nPostgreSQL-compatible databases such as CockroachDB, which may return \u003ccode\u003eON DELETE\u003c/code\u003e before \u003ccode\u003eON UPDATE\u003c/code\u003e in the constraint definition string. The\nreflection logic now correctly parses both clauses regardless of their\nordering.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13105\"\u003e#13105\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[postgresql] [bug]\u003c/strong\u003e Fixed issue in the \u003ccode\u003eengine_insertmanyvalues\u003c/code\u003e feature where using\nPostgreSQL's \u003ccode\u003eON CONFLICT\u003c/code\u003e clause with\n\u003ccode\u003e_dml.Insert.returning.sort_by_parameter_order\u003c/code\u003e enabled would\ngenerate invalid SQL when the insert used an implicit sentinel (server-side\nautoincrement primary key). The generated SQL would incorrectly declare a\nsentinel counter column in the \u003ccode\u003eimp_sen\u003c/code\u003e table alias without providing\ncorresponding values in the \u003ccode\u003eVALUES\u003c/code\u003e clause, leading to a\n\u003ccode\u003eProgrammingError\u003c/code\u003e indicating column count mismatch. The fix allows batch\nexecution mode when \u003ccode\u003eembed_values_counter\u003c/code\u003e is active, as the embedded\ncounter provides the ordering capability needed even with upsert behaviors,\nrather than unnecessarily downgrading to row-at-a-time execution.\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 `psycopg2-binary` from 2.9.9 to 2.9.11\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.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\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.9...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvector` from 0.2.4 to 0.4.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pgvector/pgvector-python/blob/master/CHANGELOG.md\"\u003epgvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.2 (2025-12-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Django 6\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003estr\u003c/code\u003e objects for \u003ccode\u003ebit\u003c/code\u003e type with SQLAlchemy\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.4.1 (2025-04-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eSparseVector\u003c/code\u003e constructor for SciPy sparse matrices\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.4.0 (2025-03-15)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded top-level \u003ccode\u003epgvector\u003c/code\u003e package\u003c/li\u003e\n\u003cli\u003eAdded support for pg8000\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003ebytes\u003c/code\u003e to \u003ccode\u003eBit\u003c/code\u003e constructor\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eglobally\u003c/code\u003e option to default to \u003ccode\u003eFalse\u003c/code\u003e for Psycopg 2\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003earrays\u003c/code\u003e option to default to \u003ccode\u003eTrue\u003c/code\u003e for Psycopg 2\u003c/li\u003e\n\u003cli\u003eFixed equality for \u003ccode\u003eVector\u003c/code\u003e, \u003ccode\u003eHalfVector\u003c/code\u003e, \u003ccode\u003eBit\u003c/code\u003e, and \u003ccode\u003eSparseVector\u003c/code\u003e classes\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eindices\u003c/code\u003e and \u003ccode\u003evalues\u003c/code\u003e methods of \u003ccode\u003eSparseVector\u003c/code\u003e returning tuple instead of list in some cases\u003c/li\u003e\n\u003cli\u003eDropped support for Python \u0026lt; 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.6 (2024-10-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003earrays\u003c/code\u003e option for Psycopg 2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.5 (2024-10-05)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eavg\u003c/code\u003e function with type casting to SQLAlchemy\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eglobally\u003c/code\u003e option for Psycopg 2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.4 (2024-09-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eschema\u003c/code\u003e option for asyncpg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.3 (2024-09-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved support for cursor factories with Psycopg 2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.2 (2024-07-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed error with asyncpg and pgvector \u0026lt; 0.7\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.1 (2024-07-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed error parsing zero sparse vectors\u003c/li\u003e\n\u003cli\u003eFixed error with Psycopg 2 and pgvector \u0026lt; 0.7\u003c/li\u003e\n\u003cli\u003eFixed error message when \u003ccode\u003evector\u003c/code\u003e type not found with Psycopg 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.0 (2024-06-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for \u003ccode\u003ehalfvec\u003c/code\u003e, \u003ccode\u003ebit\u003c/code\u003e, and \u003ccode\u003esparsevec\u003c/code\u003e types to Django\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/2968f258f9486531bd1340cbda4ff8fcaf06cdc1\"\u003e\u003ccode\u003e2968f25\u003c/code\u003e\u003c/a\u003e Version bump to 0.4.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/674f5ba3410c873d49f50fa9725b95d9db50c674\"\u003e\u003ccode\u003e674f5ba\u003c/code\u003e\u003c/a\u003e Updated checkout action [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/e2986daf2b1533cc2c849f7e39350e31d57ac325\"\u003e\u003ccode\u003ee2986da\u003c/code\u003e\u003c/a\u003e Added support for Django 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/e211ba4029f204734f0c001fbb90f6a594d561ae\"\u003e\u003ccode\u003ee211ba4\u003c/code\u003e\u003c/a\u003e Test with Python 3.14 on CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/1a72b7571adf3325174b383aca85bfb3a5b925fa\"\u003e\u003ccode\u003e1a72b75\u003c/code\u003e\u003c/a\u003e Updated pgvector on CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/c820a53bfb46196551de3c3f59f81b192d890574\"\u003e\u003ccode\u003ec820a53\u003c/code\u003e\u003c/a\u003e Simplified examples [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/caf1a2e0dd7a1ba2ad0ca9f09b50516dcfffcdeb\"\u003e\u003ccode\u003ecaf1a2e\u003c/code\u003e\u003c/a\u003e Added docs for binary quantization with SQLAlchemy [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/dc9a8f959995f009649fd230139ca41193e0a801\"\u003e\u003ccode\u003edc9a8f9\u003c/code\u003e\u003c/a\u003e Added test for binary quantization with re-ranking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/33dee606229489c9ffb0cb5a1cd72bd4705ac618\"\u003e\u003ccode\u003e33dee60\u003c/code\u003e\u003c/a\u003e Added support for str objects for bit type with SQLAlchemy - \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/ee3e71ca2c07a12a8332a3877c0ce14adc9a5da8\"\u003e\u003ccode\u003eee3e71c\u003c/code\u003e\u003c/a\u003e Updated format for license identifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pgvector/pgvector-python/compare/v0.2.4...v0.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.5.0 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/co...\n\n_Description has been truncated_","html_url":"https://github.com/dlai-sd/WAOOAW/pull/799","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlai-sd%2FWAOOAW/issues/799","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/799/packages"}}]}