{"id":43331,"name":"opensearch-py","ecosystem":"pip","repository_url":"https://github.com/opensearch-project/opensearch-py","issues_count":41,"created_at":"2025-06-17T08:10:14.823Z","updated_at":"2025-06-17T08:10:14.823Z","purl":"pkg:pypi/opensearch-py","metadata":{"id":2840638,"name":"opensearch-py","ecosystem":"pypi","description":"Python client for OpenSearch","homepage":"https://github.com/opensearch-project/opensearch-py","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/opensearch-project/opensearch-py","keywords_array":[],"namespace":null,"versions_count":19,"first_release_published_at":"2021-09-20T22:05:51.000Z","latest_release_published_at":"2025-06-17T05:39:46.000Z","latest_release_number":"3.0.0","last_synced_at":"2025-06-17T12:30:55.622Z","created_at":"2022-04-10T11:57:19.190Z","updated_at":"2025-06-17T12:30:58.087Z","registry_url":"https://pypi.org/project/opensearch-py/","install_command":"pip install opensearch-py --index-url https://pypi.org/simple","documentation_url":"https://opensearch.org/docs/clients/python","metadata":{"funding":null,"documentation":"https://opensearch.org/docs/clients/python","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy"],"normalized_name":"opensearch-py"},"repo_metadata":{"id":37077948,"uuid":"388884666","full_name":"opensearch-project/opensearch-py","owner":"opensearch-project","description":"Python Client for OpenSearch","archived":false,"fork":false,"pushed_at":"2024-05-01T20:59:58.000Z","size":10121,"stargazers_count":295,"open_issues_count":52,"forks_count":157,"subscribers_count":20,"default_branch":"main","last_synced_at":"2024-05-01T23:17:10.274Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opensearch.org/docs/latest/clients/python/","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/opensearch-project.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-23T17:56:15.000Z","updated_at":"2024-05-28T17:40:13.012Z","dependencies_parsed_at":"2023-11-28T20:23:44.032Z","dependency_job_id":"32b222be-42a7-4c73-a68c-c570426bac07","html_url":"https://github.com/opensearch-project/opensearch-py","commit_stats":{"total_commits":1380,"total_committers":201,"mean_commits":6.865671641791045,"dds":"0.42536231884057973","last_synced_commit":"83be2cd0e7f1bd5d2a42f13d36f67e60a5d2b5d8"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensearch-project","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":214917899,"owners_count":15803066,"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":"opensearch-project","name":"OpenSearch Project","uuid":"80134844","kind":"organization","description":"OpenSearch is a community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data.","email":null,"website":"https://opensearch.org/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/80134844?v=4","repositories_count":97,"last_synced_at":"2023-04-10T18:26:15.652Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/opensearch-project","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:52:40.748Z","updated_at":"2023-04-10T18:26:15.704Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensearch-project","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensearch-project/repositories"},"tags":[{"name":"v2.6.0","sha":"188b6561e714eefcdc3d0b9c08b8cd0b8ca12109","kind":"commit","published_at":"2024-05-24T16:16:19.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.6.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.6.0/manifests"},{"name":"v2.5.0","sha":"b197516a41b437bb2f23c76ec8441dc21a0816a2","kind":"commit","published_at":"2024-03-23T00:12:51.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.5.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.5.0/manifests"},{"name":"v2.4.2","sha":"103bc8948616dce57719ad089584e8e706427434","kind":"commit","published_at":"2023-11-17T21:54:54.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.4.2","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.4.2/manifests"},{"name":"v2.4.1","sha":"cec268e48df0a6ba21ac5e2ebba5d3ed698b3015","kind":"commit","published_at":"2023-11-16T00:33:43.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.4.1","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.4.1/manifests"},{"name":"v2.4.0","sha":"4874437fb5c8f698207b611cb84db32df6c6862a","kind":"commit","published_at":"2023-11-15T20:03:06.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.4.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.4.0/manifests"},{"name":"v2.3.2","sha":"2f57661ebb7c692142c4667f39ac6a2124620f8d","kind":"commit","published_at":"2023-10-09T18:02:28.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.3.2","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.3.2/manifests"},{"name":"v2.3.1","sha":"1216f66cd1d11e52be441d4326673d8bf7869b04","kind":"commit","published_at":"2023-08-21T19:08:20.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.3.1","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.3.1/manifests"},{"name":"v2.3.0","sha":"7f202ddb9285109fa9783cfe0eea5f4e789c7146","kind":"commit","published_at":"2023-07-27T17:09:42.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.3.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.3.0/manifests"},{"name":"v2.2.0","sha":"05326ba5474c1a1f5c1975760a4e37037f967dda","kind":"tag","published_at":"2023-03-01T22:34:02.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.2.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"58aa041db325cd9c9d273f21c00c969f272e933c","kind":"tag","published_at":"2023-01-24T02:41:19.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.1.1","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"4059251c1378671c2b0bcc51fed5f457afd5aa33","kind":"commit","published_at":"2023-01-20T22:58:31.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.1.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.1.0/manifests"},{"name":"v2.0.1","sha":"a372f313dd8de96350d799313c1797755b0890ea","kind":"tag","published_at":"2022-11-29T23:15:08.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.0.1","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.0.1/manifests"},{"name":"v2.0.0","sha":"76f2b60d11097ae56c609f0274231aaf8424cf81","kind":"tag","published_at":"2022-05-31T23:34:25.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/v2.0.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/v2.0.0/manifests"},{"name":"1.1.0","sha":"ac1de4e4c6103b546913b05a5183ba932f02d69f","kind":"commit","published_at":"2022-03-21T20:57:23.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/1.1.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/1.1.0/manifests"},{"name":"1.0.0","sha":"e4d0cc626725166303e8ee4525b8004b428fd55f","kind":"commit","published_at":"2021-09-20T01:51:58.000Z","download_url":"https://codeload.github.com/opensearch-project/opensearch-py/tar.gz/1.0.0","html_url":"https://github.com/opensearch-project/opensearch-py/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensearch-project%2Fopensearch-py/tags/1.0.0/manifests"}]},"repo_metadata_updated_at":"2024-10-29T21:25:36.334Z","dependent_packages_count":110,"downloads":54491991,"downloads_period":"last-month","dependent_repos_count":922,"rankings":{"downloads":0.043469728011562576,"dependent_repos_count":0.371968811845776,"dependent_packages_count":0.19533865119119895,"stargazers_count":4.837612136307861,"forks_count":5.149420311918226,"docker_downloads_count":0.36004673454302677,"average":1.826309395636275},"purl":"pkg:pypi/opensearch-py","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/opensearch-py","docker_dependents_count":67,"docker_downloads_count":201849894,"usage_url":"https://repos.ecosyste.ms/usage/pypi/opensearch-py","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/opensearch-py/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opensearch-py/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opensearch-py/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opensearch-py/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opensearch-py/related_packages","maintainers":[{"uuid":"OpenSearch","login":"OpenSearch","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/OpenSearch/","role":null,"created_at":"2023-02-15T09:15:24.185Z","updated_at":"2023-02-15T09:15:24.185Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/OpenSearch/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":694450,"maintainers_count":294768,"namespaces_count":0,"keywords_count":229737,"github":"pypi","metadata":{"funded_packages_count":49142},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-17T05:16:55.823Z","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":27,"unique_repositories_count_past_30_days":7,"recent_issues":[{"uuid":"4379043931","node_id":"PR_kwDOL8h0as7YIo8-","number":1546,"state":"closed","title":"Chore(deps): Bump the cosmetology-python-minor-patch group across 8 directories with 10 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T01:54:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-04T19:22:43.000Z","updated_at":"2026-05-11T01:54:25.000Z","time_to_close":541900,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"cosmetology-python-minor-patch","update_count":10,"packages":[{"name":"faker","old_version":"40.13.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"boto3","old_version":"1.42.89","new_version":"1.42.96","repository_url":"https://github.com/boto/boto3"},{"name":"statsig-python-core","old_version":"0.19.1","new_version":"0.19.3","repository_url":"https://github.com/statsig-io/statsig-server-core"},{"name":"boto3-stubs","old_version":"1.42.90","new_version":"1.42.96","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the cosmetology-python-minor-patch group with 4 updates in the /backend/cosmetology-app directory: [aws-cdk-aws-lambda-python-alpha](https://github.com/aws/aws-cdk), [cdk-nag](https://github.com/cdklabs/cdk-nag), [faker](https://github.com/joke2k/faker) and [ruff](https://github.com/astral-sh/ruff).\nBumps the cosmetology-python-minor-patch group with 5 updates in the /backend/cosmetology-app/lambdas/python directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.15.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.89` | `1.42.96` |\n| [statsig-python-core](https://github.com/statsig-io/statsig-server-core) | `0.19.1` | `0.19.3` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.90` | `1.42.96` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `3.1.0` | `3.2.0` |\n\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/cognito-backup directory: [boto3](https://github.com/boto/boto3).\nBumps the cosmetology-python-minor-patch group with 3 updates in the /backend/cosmetology-app/lambdas/python/common directory: [faker](https://github.com/joke2k/faker), [boto3](https://github.com/boto/boto3) and [boto3-stubs](https://github.com/youtype/mypy_boto3_builder).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/feature-flag directory: [statsig-python-core](https://github.com/statsig-io/statsig-server-core).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/provider-data-v1 directory: [faker](https://github.com/joke2k/faker).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/search directory: [opensearch-py](https://github.com/opensearch-project/opensearch-py).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/staff-users directory: [faker](https://github.com/joke2k/faker).\n\nUpdates `aws-cdk-aws-lambda-python-alpha` from 2.250.0a0 to 2.251.0a0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-cdk/releases\"\u003eaws-cdk-aws-lambda-python-alpha's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.250.0\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e** L1 resources are automatically generated from public CloudFormation Resource Schemas. They are built to closely reflect the real state of CloudFormation. Sometimes these updates can contain changes that are incompatible with previous types, but more accurately reflect reality. In this release we have changed:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eaws-emr: AWS::EMR::Cluster: MonitoringConfiguration property removed.\naws-emr: AWS::EMR::Cluster: CloudWatchLogConfiguration type removed.\naws-emr: AWS::EMR::Cluster: EMRConfiguration type removed.\naws-emr: AWS::EMR::Cluster: MonitoringConfiguration type removed.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003es3files:\u003c/strong\u003e s3Files Lambda L1 integration (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37547\"\u003e#37547\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/af41262a657e9533abcf07c98d0d2c4fad5e35f0\"\u003eaf41262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate L1 CloudFormation resource definitions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37582\"\u003e#37582\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/c99ce64b7715f7bd40b09e08ecf5b05666a5f525\"\u003ec99ce64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emediapackagev2:\u003c/strong\u003e add region attribute on mediapackagev2 resources and extra naming validation (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37526\"\u003e#37526\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/112ed67da18a43019a17f330ec6db399cd7d64d0\"\u003e112ed67\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeks-v2:\u003c/strong\u003e respect securityGroup(s) in KubectlProviderOptions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37247\"\u003e#37247\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/4c530fa49bbf4b1956f7ebf92b7b517ff668dfdb\"\u003e4c530fa\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36653\"\u003e#36653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elambda-nodejs:\u003c/strong\u003e if entry path is not under project root, bundling in Docker fails in an unclear way (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37572\"\u003e#37572\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/73662dfdece2e9bacf0afcd8f40ae07b48ed7891\"\u003e73662df\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eAlpha modules (2.250.0-alpha.0)\u003c/h2\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/aws/aws-cdk/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aws-cdk-lib` from 2.250.0 to 2.252.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-cdk/releases\"\u003eaws-cdk-lib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.252.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e \u003ccode\u003eValidations\u003c/code\u003e class now supports \u003ccode\u003eaddWarning\u003c/code\u003e, \u003ccode\u003eaddError\u003c/code\u003e, and \u003ccode\u003eacknowledge\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37668\"\u003e#37668\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/5e8083c79f2657fe2364a31ed3f26d0d88638920\"\u003e5e8083c\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk-rfcs/issues/899\"\u003eaws/aws-cdk-rfcs#899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e add Box API for deferred values with accurate stack traces (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37604\"\u003e#37604\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/d592a969caf30c2f62df99c9a269722ae528cd65\"\u003ed592a96\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eaws-cdk-lib:\u003c/strong\u003e cannot be used as a \u003ccode\u003ebundledDependency\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37726\"\u003e#37726\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/6ba0598d0b1a099db9c74723ac2567cc947ad802\"\u003e6ba0598\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37717\"\u003e#37717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003es3:\u003c/strong\u003e resolve S3 notification removal race condition (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37708\"\u003e#37708\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/dc5be981a9568a4bb60e47ec9106696650f0bfc8\"\u003edc5be98\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37667\"\u003e#37667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eAlpha modules (2.252.0-alpha.0)\u003c/h2\u003e\n\u003ch2\u003ev2.251.0\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e** L1 resources are automatically generated from public CloudFormation Resource Schemas. They are built to closely reflect the real state of CloudFormation. Sometimes these updates can contain changes that are incompatible with previous types, but more accurately reflect reality. In this release we have changed:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eaws-elasticloadbalancing: AWS::ElasticLoadBalancing::LoadBalancer: SourceSecurityGroup attribute removed.\naws-elasticloadbalancing: AWS::ElasticLoadBalancing::LoadBalancer: PolicyItem type removed.\naws-elasticloadbalancing: AWS::ElasticLoadBalancing::LoadBalancer: SourceSecurityGroup type removed.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate L1 CloudFormation resource definitions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37684\"\u003e#37684\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/9e6c2efc42b72115414b5874cc77900de4ba13a5\"\u003e9e6c2ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elambda:\u003c/strong\u003e add ruby 4.0 runtime (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37650\"\u003e#37650\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/04d4337b1d104d9f32e76109675f968da082781c\"\u003e04d4337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate L1 CloudFormation resource definitions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37644\"\u003e#37644\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/e64f943fec033f404a4830133aa916ebaf0cc2aa\"\u003ee64f943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e \u003ccode\u003eValidations\u003c/code\u003e class is the new way to add validation plugins to CDK Apps (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37611\"\u003e#37611\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/95696b463de0df91fb8d50b15add5200ac6818c1\"\u003e95696b4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37613\"\u003e#37613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e graduate \u003ccode\u003epolicyValidationBeta1\u003c/code\u003e interfaces to \u003ccode\u003epolicyValidation\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37613\"\u003e#37613\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/8c613cf291eda9920165585bda06c55ef28667bc\"\u003e8c613cf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eecs:\u003c/strong\u003e support for service connect access log configuration (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36067\"\u003e#36067\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/5ad1c06e196b9f3bfec2bc79c9d7aa85af366ee0\"\u003e5ad1c06\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eroute53:\u003c/strong\u003e accelerated recovery for public hosted zone (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36358\"\u003e#36358\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/f1b7b03e3f65253fed5d934fc2f1d1ea08e3e2fc\"\u003ef1b7b03\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esynthetics:\u003c/strong\u003e support canary group  (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/35689\"\u003e#35689\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/20ccd310789828854b85faadb603466ac405e695\"\u003e20ccd31\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/34043\"\u003e#34043\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e \u003ccode\u003eStage.policyValidationBeta1\u003c/code\u003e is mutable (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37612\"\u003e#37612\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/3c1faf13b325587971a461d1837734b09c92909d\"\u003e3c1faf1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e construct creation stack traces are implicit (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37643\"\u003e#37643\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/5635c208a465772bacb9ea087af98e4e668b9125\"\u003e5635c20\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e synth output is not valid YAML when using policy validation (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37597\"\u003e#37597\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/927dd60d6bdab7a57a5b14bd8f0e7df6fe7cfdce\"\u003e927dd60\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/25331\"\u003e#25331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e token stack traces expensively clutter --debug mode (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37642\"\u003e#37642\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/498c5469f8f132103e16fdb89bd5cf17b1f84dbd\"\u003e498c546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e tree metadata does not contain logical ID (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37630\"\u003e#37630\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/284ab2367e8fe891fdf4cb2d5a193a695fc1bc49\"\u003e284ab23\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eec2:\u003c/strong\u003e fixing vpc endpoint for eu-isoe-west-1 region (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37596\"\u003e#37596\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/555c930e3d3eb7248fc695c853ce50c06cd246bd\"\u003e555c930\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/31690\"\u003e#31690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eevents-targets:\u003c/strong\u003e make LogGroupTargetInput extend RuleTargetInput for JSII compatibility (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37451\"\u003e#37451\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/46dbc7abc92ceb84e5271698f5281941d8324769\"\u003e46dbc7a\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36733\"\u003e#36733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elambda:\u003c/strong\u003e add \u003ccode\u003eToken.isUnresolved\u003c/code\u003e checks to provisioned poller config validation (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37197\"\u003e#37197\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/667ed3019a02564c88fa2b8f7fe56bd46b760c67\"\u003e667ed30\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estepfunctions-tasks:\u003c/strong\u003e warn when CallAwsServiceCrossRegion endpoint is resolved from state input (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37646\"\u003e#37646\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/9fdf5907b12713b62190de4f5ad7c79b97b3a7a4\"\u003e9fdf590\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eAlpha modules (2.251.0-alpha.0)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-cdk/blob/main/CHANGELOG.v2.alpha.md\"\u003eaws-cdk-lib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file. See \u003ca href=\"https://github.com/conventional-changelog/standard-version\"\u003estandard-version\u003c/a\u003e for commit guidelines.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.251.0-alpha.0...v2.252.0-alpha.0\"\u003e2.252.0-alpha.0\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.250.0-alpha.0...v2.251.0-alpha.0\"\u003e2.251.0-alpha.0\u003c/a\u003e (2026-04-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebedrock-agentcore-alpha:\u003c/strong\u003e add L2 constructs for policy and policy engine  (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37238\"\u003e#37238\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/1e89e7e921a9946cb9c23f967c6b7a33a6048de4\"\u003e1e89e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebedrock-agentcore-alpha:\u003c/strong\u003e add observability configuration for Runtime (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36689\"\u003e#36689\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/34b43aabe2c3a946ba286812b402ce946222d820\"\u003e34b43aa\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36596\"\u003e#36596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebedrock-agentcore-alpha:\u003c/strong\u003e support No Authorization for AgentCore Gateway (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36610\"\u003e#36610\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/f20bd8e43700877f7166cdac3cd994876963bc67\"\u003ef20bd8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edsql-alpha:\u003c/strong\u003e initial L2 construct (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/34599\"\u003e#34599\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/be1a45861a5138b6e397cf076e39dfe0a18d4e99\"\u003ebe1a458\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/34593\"\u003e#34593\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.249.0-alpha.0...v2.250.0-alpha.0\"\u003e2.250.0-alpha.0\u003c/a\u003e (2026-04-14)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.248.0-alpha.0...v2.249.0-alpha.0\"\u003e2.249.0-alpha.0\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.247.0-alpha.0...v2.248.0-alpha.0\"\u003e2.248.0-alpha.0\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.246.0-alpha.0...v2.247.0-alpha.0\"\u003e2.247.0-alpha.0\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003emediapackagev2-alpha:\u003c/strong\u003e new L2 construct (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37279\"\u003e#37279\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/7debfb9c5e807fac5df6e9e0ea3097d72325ffbc\"\u003e7debfb9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.245.0-alpha.0...v2.246.0-alpha.0\"\u003e2.246.0-alpha.0\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.244.0-alpha.0...v2.245.0-alpha.0\"\u003e2.245.0-alpha.0\u003c/a\u003e (2026-03-27)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003es3tables-alpha:\u003c/strong\u003e add support for partition spec, sort order, and table properties (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36811\"\u003e#36811\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/2696cd16e8e2edc8d40f1443b9c87eb6171e5d1f\"\u003e2696cd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003es3tables-alpha:\u003c/strong\u003e add metrics configuration support for TableBucket (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37275\"\u003e#37275\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/e8786f5d782d906971f933a2d6d432309d5384d7\"\u003ee8786f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003es3tables-alpha:\u003c/strong\u003e implement ITaggableV2 on TableBucket and Table L2 constructs (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37277\"\u003e#37277\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/69c8944ea3f4abf0f4218af2fc42c8e862e8cad3\"\u003e69c8944\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/33054\"\u003e#33054\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.243.0-alpha.0...v2.244.0-alpha.0\"\u003e2.244.0-alpha.0\u003c/a\u003e (2026-03-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekinesisanalytics-flink-alpha:\u003c/strong\u003e mark deprecated flink runtimes as deprecated (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37155\"\u003e#37155\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/0a894472650bb1a2c41050ae2b00581fb937c924\"\u003e0a89447\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.242.0-alpha.0...v2.243.0-alpha.0\"\u003e2.243.0-alpha.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.241.0-alpha.0...v2.242.0-alpha.0\"\u003e2.242.0-alpha.0\u003c/a\u003e (2026-03-10)\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/aws/aws-cdk/commit/a58510c0c3fc909a7173f962135f455d0c4673c0\"\u003e\u003ccode\u003ea58510c\u003c/code\u003e\u003c/a\u003e chore(release): 2.252.0 (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37727\"\u003e#37727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/9e000ffec4711a63263da700f0089157e7884a9e\"\u003e\u003ccode\u003e9e000ff\u003c/code\u003e\u003c/a\u003e chore: trigger build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/323844a044c5e13968a46289ac353ee878d0d064\"\u003e\u003ccode\u003e323844a\u003c/code\u003e\u003c/a\u003e chore: update analytics metadata blueprints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/9f70a52f8803da5141e78bce60ca041143a85bb2\"\u003e\u003ccode\u003e9f70a52\u003c/code\u003e\u003c/a\u003e chore(release): 2.252.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/6ba0598d0b1a099db9c74723ac2567cc947ad802\"\u003e\u003ccode\u003e6ba0598\u003c/code\u003e\u003c/a\u003e fix(aws-cdk-lib): cannot be used as a \u003ccode\u003ebundledDependency\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37726\"\u003e#37726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/d592a969caf30c2f62df99c9a269722ae528cd65\"\u003e\u003ccode\u003ed592a96\u003c/code\u003e\u003c/a\u003e feat(core): add Box API for deferred values with accurate stack traces (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37604\"\u003e#37604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/0616322e5f3ddc5d78e0ed9093ed2fe1dd8133a1\"\u003e\u003ccode\u003e0616322\u003c/code\u003e\u003c/a\u003e refactor(lambda-nodejs): unify code paths between local \u0026amp; Docker bundling (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/dc5be981a9568a4bb60e47ec9106696650f0bfc8\"\u003e\u003ccode\u003edc5be98\u003c/code\u003e\u003c/a\u003e fix(s3): resolve S3 notification removal race condition (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37708\"\u003e#37708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/a78ddc5017befd39b4f531601889254496272df1\"\u003e\u003ccode\u003ea78ddc5\u003c/code\u003e\u003c/a\u003e chore(ci): fix pr-issue-check unable to comment on PRs from forks (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37703\"\u003e#37703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/556f8d3aa06da2ff55d613526e65a6a2564a9c43\"\u003e\u003ccode\u003e556f8d3\u003c/code\u003e\u003c/a\u003e chore(core): migrate off of \u003ccode\u003eBeta1\u003c/code\u003e properties internally (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37711\"\u003e#37711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.250.0...v2.252.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cdk-nag` from 2.37.55 to 2.38.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cdklabs/cdk-nag/releases\"\u003ecdk-nag's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.38.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.38.1...v2.38.2\"\u003e2.38.2\u003c/a\u003e (2026-04-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eprefix using Stage Construct ID to avoid StageName colissions (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2338\"\u003e#2338\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/c0d76f6405747ab40fe486a34f8f9020949d36b6\"\u003ec0d76f6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.38.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.38.0...v2.38.1\"\u003e2.38.1\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove unnecessary test for \u003ccode\u003eserverSideEncryptionConfiguration\u003c/code\u003e to not be undefined (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2227\"\u003e#2227\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/9436814b8824578428d8cf86cdf66ac4498f6b24\"\u003e9436814\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2226\"\u003e#2226\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.38.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.37.56...v2.38.0\"\u003e2.38.0\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd rule MWAAAllLoggingInfo (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2239\"\u003e#2239\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/03ad81aed2cc5c909fa8c6285f516e03ce57bb38\"\u003e03ad81a\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2238\"\u003e#2238\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.37.56\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.37.55...v2.37.56\"\u003e2.37.56\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPIGWStructuredLogging:\u003c/strong\u003e no stage description for CfnDeployment throws an error (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2268\"\u003e#2268\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/ac6dcd3e2dfedafd91c59b80731589678a3ccaae\"\u003eac6dcd3\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2267\"\u003e#2267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCognito user pool advanced security mode (deprecated) updated to plus tier (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2155\"\u003e#2155\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/5a8b71d3fdf1a59301b8caa9cdcb4bed603b7cb1\"\u003e5a8b71d\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2139\"\u003e#2139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprefix report filename with stage name to prevent collisions (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2302\"\u003e#2302\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/54e6425baabcbf8783061d67cf35611f9eb1e425\"\u003e54e6425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erelease:\u003c/strong\u003e use 'release' GitHub environment for publish jobs (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/9b66acdafac1b8d096c260b517e5af2aa5bee0f1\"\u003e9b66acd\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/cdklabs/cdk-nag/commit/c0d76f6405747ab40fe486a34f8f9020949d36b6\"\u003e\u003ccode\u003ec0d76f6\u003c/code\u003e\u003c/a\u003e fix: prefix using Stage Construct ID to avoid StageName colissions (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2338\"\u003e#2338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/0d52df52c0db57aa33f5b90c38f34c9bbafbf815\"\u003e\u003ccode\u003e0d52df5\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in elasticbeanstalk rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2210\"\u003e#2210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/4511bc03852ab9b0c83cd195fd1091125f32088d\"\u003e\u003ccode\u003e4511bc0\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in apigw rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2190\"\u003e#2190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/b684354b7617086392081005c582725df749e77c\"\u003e\u003ccode\u003eb684354\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in codebuild rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2196\"\u003e#2196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/e4dc7d9b51bec1dfacda04164f7a666b41de4772\"\u003e\u003ccode\u003ee4dc7d9\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in ecs rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2206\"\u003e#2206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/c6f2d4f3c272fab6a7c4d90fd07be64b90bbf16a\"\u003e\u003ccode\u003ec6f2d4f\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in ec2 rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2202\"\u003e#2202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/07e625883844660e67a9cc5a9852a10341f8bfdf\"\u003e\u003ccode\u003e07e6258\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in elasticache rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2208\"\u003e#2208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/e5d11b1dc28ebeeab1deef6dbce70c5536ac0fd0\"\u003e\u003ccode\u003ee5d11b1\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in ecr rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2204\"\u003e#2204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/839646927482c4483760901bd526c58dcb52e815\"\u003e\u003ccode\u003e8396469\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in cloudwatch rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/51dd22802b6be8579f3f0fd8d52e274afc78fd9f\"\u003e\u003ccode\u003e51dd228\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in cognito rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2198\"\u003e#2198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.37.55...v2.38.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.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.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\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/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\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/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\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/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\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.12/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.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\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/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\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/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\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/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\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/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add da...\n\n_Description has been truncated_","html_url":"https://github.com/csg-org/CompactConnect/pull/1546","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/csg-org%2FCompactConnect/issues/1546","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1546/packages"},{"uuid":"4372916067","node_id":"PR_kwDORzxjSM7X0rft","number":67,"state":"closed","title":"chore(deps-dev): bump the vdb group across 1 directory with 18 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-10T20:39:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-03T20:39:57.000Z","updated_at":"2026-05-10T20:39:22.000Z","time_to_close":604764,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"vdb","update_count":18,"packages":[{"name":"weaviate-client","old_version":"4.20.4","new_version":"4.21.0","repository_url":"https://github.com/weaviate/weaviate-python-client"},{"name":"alibabacloud-gpdb20160503","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/aliyun/alibabacloud-python-sdk"},{"name":"alibabacloud-tea-openapi","old_version":"0.4.3","new_version":"0.4.4","repository_url":"https://github.com/aliyun/darabonba-openapi"},{"name":"chromadb","old_version":"0.5.20","new_version":"1.5.8","repository_url":"https://github.com/chroma-core/chroma"},{"name":"clickhouse-connect","old_version":"0.14.1","new_version":"0.15.1","repository_url":"https://github.com/ClickHouse/clickhouse-connect"},{"name":"couchbase","old_version":"4.5.0","new_version":"4.6.1","repository_url":"https://github.com/couchbase/couchbase-python-client"},{"name":"elasticsearch","old_version":"8.14.0","new_version":"9.3.0","repository_url":"https://github.com/elastic/elasticsearch-py"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pymilvus","old_version":"2.6.10","new_version":"2.6.12","repository_url":"https://github.com/milvus-io/pymilvus"},{"name":"pymochow","old_version":"2.3.6","new_version":"2.4.0"},{"name":"pyobvector","old_version":"0.2.25","new_version":"0.2.26","repository_url":"https://github.com/oceanbase/pyobvector"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [weaviate-client](https://github.com/weaviate/weaviate-python-client), [alibabacloud-gpdb20160503](https://github.com/aliyun/alibabacloud-python-sdk), [alibabacloud-tea-openapi](https://github.com/aliyun/darabonba-openapi), [chromadb](https://github.com/chroma-core/chroma), [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect), [couchbase](https://github.com/couchbase/couchbase-python-client), [elasticsearch](https://github.com/elastic/elasticsearch-py), [opensearch-py](https://github.com/opensearch-project/opensearch-py), [pgvecto-rs[sqlalchemy]](https://github.com/tensorchord/pgvecto.rs), [pymilvus](https://github.com/milvus-io/pymilvus), [pymochow](http://bce.baidu.com), [pyobvector](https://github.com/oceanbase/pyobvector), [qdrant-client](https://github.com/qdrant/qdrant-client), [intersystems-irispython](https://www.intersystems.com/), [tablestore](https://github.com/aliyun/aliyun-tablestore-python-sdk), tcvectordb, [xinference-client](https://github.com/xorbitsai/inference-client) and [mysql-connector-python](https://github.com/mysql/mysql-connector-python) to permit the latest version.\nUpdates `weaviate-client` from 4.20.4 to 4.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weaviate/weaviate-python-client/releases\"\u003eweaviate-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003e1.37\u003c/code\u003e features by \u003ca href=\"https://github.com/tsmith023\"\u003e\u003ccode\u003e@​tsmith023\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1988\"\u003eweaviate/weaviate-python-client#1988\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.20.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Object TTL schema export to match server json by \u003ca href=\"https://github.com/dudanogueira\"\u003e\u003ccode\u003e@​dudanogueira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1958\"\u003eweaviate/weaviate-python-client#1958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for audio modality in multi2vec-google vectorizer config by \u003ca href=\"https://github.com/antas-marcin\"\u003e\u003ccode\u003e@​antas-marcin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1983\"\u003eweaviate/weaviate-python-client#1983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: export FilterReturn from weaviate.classes.query by \u003ca href=\"https://github.com/renaudcepre\"\u003e\u003ccode\u003e@​renaudcepre\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1993\"\u003eweaviate/weaviate-python-client#1993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: parse asyncConfig from replication config GET response by \u003ca href=\"https://github.com/jfrancoa\"\u003e\u003ccode\u003e@​jfrancoa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1996\"\u003eweaviate/weaviate-python-client#1996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: throw specific exception on empty list filters for time filters by \u003ca href=\"https://github.com/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(deps): remove unmaintained deprecation package, use stdlib instead by \u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse get() instead of direct dict access by \u003ca href=\"https://github.com/DanielJanicek\"\u003e\u003ccode\u003e@​DanielJanicek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1995\"\u003eweaviate/weaviate-python-client#1995\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/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\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/weaviate/weaviate-python-client/blob/main/docs/changelog.rst\"\u003eweaviate-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.21.0\u003c/h2\u003e\n\u003cp\u003eThis minor version includes:\n- Support for new 1.37 features:\n- Add support for the new \u003ccode\u003eblobHash\u003c/code\u003e property data type\n- Add support for returning profiling when making queries with the \u003ccode\u003ereturn_metadata=[\u0026quot;query_profile\u0026quot;]\u003c/code\u003e parameter\n- Add support for on-demaned tokenization through the \u003ccode\u003eclient.tokenize\u003c/code\u003e namespace\n- Add support for managing permissions for accessing the native MCP server\n- Add support for collection export\n- Add support for incremental backups\n- Minor bug fixes and improvements:\n- Change \u003ccode\u003ealpha\u003c/code\u003e queries and aggregations to use server-side default parameter\n- Fixes rare flakey behaviour of \u003ccode\u003eclient.batch.stream\u003c/code\u003e on server hangup\u003c/p\u003e\n\u003ch2\u003eVersion 4.20.5\u003c/h2\u003e\n\u003cp\u003eThis patch version includes:\n- Fix objectTTL config export\n- Add support for audio modality in multi2vec-google\n- Export FilterReturn from weaviate.classes.query\n- Fix updating async replication config\n- Remove unmaintained \u003ccode\u003edeprecated\u003c/code\u003e dependency\n- Throw exception on empty time filters\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/weaviate/weaviate-python-client/commit/592bc7a2805885a92c8379c3cb8162bcc6702741\"\u003e\u003ccode\u003e592bc7a\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003e1.37\u003c/code\u003e features (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/1988\"\u003e#1988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/6dce1053e148afd014e04baac6b8915e73d0211d\"\u003e\u003ccode\u003e6dce105\u003c/code\u003e\u003c/a\u003e Improve flakiness of SSB tests (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2015\"\u003e#2015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/5a32208a724a6496a146dd27d8642b9ed7a00670\"\u003e\u003ccode\u003e5a32208\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2013\"\u003e#2013\u003c/a\u003e from weaviate/fix_flaky_user_test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/feb4e4c99ce3af000cc1c7f24187640d426a301c\"\u003e\u003ccode\u003efeb4e4c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2009\"\u003e#2009\u003c/a\u003e from weaviate/dependabot/pip/pytest-9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/f2cf9658f635c8a914c2fdbf5d9659c9945ef6ea\"\u003e\u003ccode\u003ef2cf965\u003c/code\u003e\u003c/a\u003e Better variable names\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/a3a7208f725573403a9ecba6399845634b8926f4\"\u003e\u003ccode\u003ea3a7208\u003c/code\u003e\u003c/a\u003e Replace random number with unique and deterministic name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/93fff165025a2dc354687fac51ff8b52554f38a7\"\u003e\u003ccode\u003e93fff16\u003c/code\u003e\u003c/a\u003e build(deps): bump pytest from 9.0.2 to 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/4d66220f37faa5089334d98538a61b0ced709b00\"\u003e\u003ccode\u003e4d66220\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2007\"\u003e#2007\u003c/a\u003e from weaviate/changelog_4_20_5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/78fa5f7f08ea50b2a1041eecd2d010f81885922f\"\u003e\u003ccode\u003e78fa5f7\u003c/code\u003e\u003c/a\u003e Update docs/changelog.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/2af1289def1346ce6e21f1bc05d9966e42a7bf5e\"\u003e\u003ccode\u003e2af1289\u003c/code\u003e\u003c/a\u003e Changelog + reformat\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-gpdb20160503` from 5.1.0 to 5.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/alibabacloud-python-sdk/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-tea-openapi` from 0.4.3 to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/darabonba-openapi/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 0.5.20 to 1.5.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.8\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.8\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.8\u003c/code\u003e\nBuild Date: \u003ccode\u003e2026-04-16T23:35\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.5.8.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: Make materialize_logs aware of sharding by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6833\"\u003echroma-core/chroma#6833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: retry per shard instead of every shard by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6841\"\u003echroma-core/chroma#6841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Integrate seal operator for sharded collections by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6842\"\u003echroma-core/chroma#6842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Merge, sort and truncate in FE by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6846\"\u003echroma-core/chroma#6846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Prefetch per shard by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6850\"\u003echroma-core/chroma#6850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Create per-tenant config in the compactor for shard sizes by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6847\"\u003echroma-core/chroma#6847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: support partial manifest scans by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6799\"\u003echroma-core/chroma#6799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Replace join_all with buffered_unordered with a limit in block loads by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6854\"\u003echroma-core/chroma#6854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add pod anti-affinity support to StatefulSet helm templates by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6859\"\u003echroma-core/chroma#6859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Disable stall protection for reads. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6858\"\u003echroma-core/chroma#6858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove fanout in writer by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6861\"\u003echroma-core/chroma#6861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Make the most recent log spanner-migration idempotent. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6863\"\u003echroma-core/chroma#6863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/config\"\u003eENH\u003c/a\u003e: make admin RPC timeout configurable by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6864\"\u003echroma-core/chroma#6864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add CLI I/O terminal for testing by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6860\"\u003echroma-core/chroma#6860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Fix missing word in manage-collections documentation by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6873\"\u003echroma-core/chroma#6873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Composite rules for tiering by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6876\"\u003echroma-core/chroma#6876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add I/O abstraction to CLI commands by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6877\"\u003echroma-core/chroma#6877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Add member_id to node_name lookup in ClientAssigner by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6875\"\u003echroma-core/chroma#6875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: get_prefix use buffer ordered by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6893\"\u003echroma-core/chroma#6893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Revert \u0026quot;[CLN] Remove compaction_client binary (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6744\"\u003e#6744\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6901\"\u003echroma-core/chroma#6901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add config store abstraction to CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6879\"\u003echroma-core/chroma#6879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add Superlinked embedding function integration by \u003ca href=\"https://github.com/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add MCMR property tests and fix dirty log detection by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6835\"\u003echroma-core/chroma#6835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update stars/followers count by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6908\"\u003echroma-core/chroma#6908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make compaction client grpc timeout configurable by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6902\"\u003echroma-core/chroma#6902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/faults\"\u003eENH\u003c/a\u003e: add fault injection control plane by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6795\"\u003echroma-core/chroma#6795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Change retry rate limits in s3 client by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6917\"\u003echroma-core/chroma#6917\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6849\"\u003echroma-core/chroma#6849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use the official Rust client in the CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6906\"\u003echroma-core/chroma#6906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndBoundedWal read level by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6914\"\u003echroma-core/chroma#6914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndAdaptiveWal to clients by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6918\"\u003echroma-core/chroma#6918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6921\"\u003echroma-core/chroma#6921\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/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\"\u003ehttps://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.7\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.7\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.7\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/124a6cb7331cda1efc48a48390c25409fce22423\"\u003e\u003ccode\u003e124a6cb\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6921\"\u003e#6921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/0367cb4de40b79ac838770c3e04ec921808b10b2\"\u003e\u003ccode\u003e0367cb4\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndAdaptiveWal to clients (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6918\"\u003e#6918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f749f58f881830ad5ed4d728529b5d491656f825\"\u003e\u003ccode\u003ef749f58\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndBoundedWal read level (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6914\"\u003e#6914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/db9a8bd595409f26a83ac2eca8ab3c4e9e168bee\"\u003e\u003ccode\u003edb9a8bd\u003c/code\u003e\u003c/a\u003e [ENH] Use the official Rust client in the CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6906\"\u003e#6906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f9a7f68f24501ce00ad8e1a9200993331458a8ee\"\u003e\u003ccode\u003ef9a7f68\u003c/code\u003e\u003c/a\u003e \u003ca href=\"wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6849\"\u003e#6849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/c94eb76bcea0f3153bb8f7058b173abfb401e24e\"\u003e\u003ccode\u003ec94eb76\u003c/code\u003e\u003c/a\u003e [ENH]: Change retry rate limits in s3 client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6917\"\u003e#6917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a760f7ecb934e29c6d308cecc2dc413e359e89f2\"\u003e\u003ccode\u003ea760f7e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"faults\"\u003eENH\u003c/a\u003e: add fault injection control plane (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6795\"\u003e#6795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a5a919a6ac849b55c6922e13204e97504945474a\"\u003e\u003ccode\u003ea5a919a\u003c/code\u003e\u003c/a\u003e [ENH]: Make compaction client grpc timeout configurable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6902\"\u003e#6902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/47b29487b656135209221418a9efcc545a2723af\"\u003e\u003ccode\u003e47b2948\u003c/code\u003e\u003c/a\u003e [ENH] Update stars/followers count (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6908\"\u003e#6908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/71afcf0b4294f8fe2d4d1bd2aaaf1ff4f4791446\"\u003e\u003ccode\u003e71afcf0\u003c/code\u003e\u003c/a\u003e [ENH] add MCMR property tests and fix dirty log detection (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/0.5.20...1.5.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clickhouse-connect` from 0.14.1 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/releases\"\u003eclickhouse-connect's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.15.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.15.0\u003c/h2\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eComprehensive ClickHouse \u003ccode\u003eJOIN\u003c/code\u003e support in SQLAlchemy via \u003ccode\u003ech_join()\u003c/code\u003e with all strictness/distribution modifiers and \u003ccode\u003eUSING\u003c/code\u003e syntax (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/635\"\u003e#635\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMulti-column \u003ccode\u003earray_join()\u003c/code\u003e for parallel array expansion (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing Replicated engine variants (\u003ccode\u003eReplicatedReplacingMergeTree\u003c/code\u003e, etc.) (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazy imports for \u003ccode\u003enumpy\u003c/code\u003e, \u003ccode\u003epandas\u003c/code\u003e, \u003ccode\u003epyarrow\u003c/code\u003e, and \u003ccode\u003epolars\u003c/code\u003e, ~4x faster bare import time (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e.final()\u003c/code\u003e and \u003ccode\u003e.sample()\u003c/code\u003e silently overwriting each other when chained (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esqlalchemy.values()\u003c/code\u003e to emit ClickHouse \u003ccode\u003eVALUES\u003c/code\u003e table function syntax (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/681\"\u003e#681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eGraphiteMergeTree\u003c/code\u003e to properly quote \u003ccode\u003econfig_section\u003c/code\u003e argument\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003epy.typed\u003c/code\u003e marker that was causing false type errors for mypy/pyright users (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.0\"\u003ehttps://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.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/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md\"\u003eclickhouse-connect's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1, 2026-03-30\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Previously, \u003ccode\u003ebind_query\u003c/code\u003e always converted datetimes to the server timezone, ignoring explicit timezone declarations in type hints like \u003ccode\u003eDateTime64(6, 'UTC')\u003c/code\u003e. This caused incorrect query results when \u003ccode\u003eserver_tz\u003c/code\u003e differed from the hint timezone. Handles \u003ccode\u003eLowCardinality\u003c/code\u003e, \u003ccode\u003eNullable\u003c/code\u003e, and container type wrappers. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.0, 2026-03-26\u003c/h2\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Comprehensive ClickHouse JOIN support via the new \u003ccode\u003ech_join()\u003c/code\u003e helper. All strictness modifiers (\u003ccode\u003eALL\u003c/code\u003e, \u003ccode\u003eANY\u003c/code\u003e, \u003ccode\u003eSEMI\u003c/code\u003e, \u003ccode\u003eANTI\u003c/code\u003e, \u003ccode\u003eASOF\u003c/code\u003e), the \u003ccode\u003eGLOBAL\u003c/code\u003e distribution modifier, and explicit \u003ccode\u003eCROSS JOIN\u003c/code\u003e are now available. Use with \u003ccode\u003eselect_from()\u003c/code\u003e to generate ClickHouse-specific join syntax like \u003ccode\u003eGLOBAL ALL LEFT OUTER JOIN\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/635\"\u003e#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003earray_join()\u003c/code\u003e now supports multiple columns for parallel array expansion. Pass a list of columns and a matching list of aliases to generate \u003ccode\u003eARRAY JOIN col1 AS a, col2 AS b, col3 AS c\u003c/code\u003e. Single-column usage is unchanged. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/633\"\u003e#633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003ech_join()\u003c/code\u003e now supports \u003ccode\u003eUSING\u003c/code\u003e syntax via the new \u003ccode\u003eusing\u003c/code\u003e parameter. Pass a list of column name strings to generate \u003ccode\u003eUSING (col1, col2)\u003c/code\u003e instead of \u003ccode\u003eON\u003c/code\u003e. This is important for \u003ccode\u003eFULL OUTER JOIN\u003c/code\u003e where \u003ccode\u003eUSING\u003c/code\u003e merges the join column correctly while \u003ccode\u003eON\u003c/code\u003e produces default values (0, '') for unmatched sides. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/636\"\u003e#636\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Add missing Replicated table engine variants: \u003ccode\u003eReplicatedReplacingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedCollapsingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedVersionedCollapsingMergeTree\u003c/code\u003e, and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/687\"\u003e#687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazy imports for optional dependencies (numpy, pandas, pyarrow, polars). If installed, these heavy libraries are no longer imported at \u003ccode\u003eimport clickhouse_connect\u003c/code\u003e time. They are only imported when features that need them are actually used. The C/Numpy optimization bridge is also deferred. This speeds up bare import time of \u003ccode\u003eclickhouse-connect\u003c/code\u003e about 4X in environments where all four are installed. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/589\"\u003e#589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003epy.typed\u003c/code\u003e marker file. The package does not have comprehensive type annotations, so the PEP 561 marker was causing false type errors for mypy/pyright users. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/691\"\u003e#691\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003e.final()\u003c/code\u003e and \u003ccode\u003e.sample()\u003c/code\u003e silently overwriting each other when chained. Both methods now store modifiers as custom attributes on the \u003ccode\u003eSelect\u003c/code\u003e instance and render them during compilation, replacing the previous \u003ccode\u003ewith_hint()\u003c/code\u003e approach that only allowed one hint per table. Chaining in either order (e.g. \u003ccode\u003eselect(t).final().sample(0.1)\u003c/code\u003e) correctly produces \u003ccode\u003eFROM t FINAL SAMPLE 0.1\u003c/code\u003e. Also fixes rendering for aliased tables (\u003ccode\u003eFROM t AS u FINAL\u003c/code\u003e) and supports explicit table targeting in joins. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/658\"\u003e#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003esqlalchemy.values()\u003c/code\u003e to generate ClickHouse's \u003ccode\u003eVALUES\u003c/code\u003e table function syntax. The compiler now emits \u003ccode\u003eVALUES('col1 Type1, col2 Type2', ...)\u003c/code\u003e with the column structure as the first argument, instead of the standard SQL form that places column names after the alias. Generic SQLAlchemy types are mapped to ClickHouse equivalents (e.g. \u003ccode\u003eInteger\u003c/code\u003e to \u003ccode\u003eInt32\u003c/code\u003e, \u003ccode\u003eString\u003c/code\u003e to \u003ccode\u003eString\u003c/code\u003e). Also handles CTE usage by wrapping in \u003ccode\u003eSELECT * FROM VALUES(...)\u003c/code\u003e. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/681\"\u003e#681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003eGraphiteMergeTree\u003c/code\u003e and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e to properly single-quote the \u003ccode\u003econfig_section\u003c/code\u003e argument as ClickHouse requires.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05ec766c6c336812d1307eb49df33ba954cebb3d\"\u003e\u003ccode\u003e05ec766\u003c/code\u003e\u003c/a\u003e respect bind param tz type hints, bf release 0.15.1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/c4c2a4e2e1a6b1b54eff4e3effda4eab0781b0eb\"\u003e\u003ccode\u003ec4c2a4e\u003c/code\u003e\u003c/a\u003e 0.15.0 release prep (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/cd8cbf48b01ebb68959745aa223f256240d0fe94\"\u003e\u003ccode\u003ecd8cbf4\u003c/code\u003e\u003c/a\u003e Joe/remove pytyped and other small cleanup issues (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05859efdd18e4ec0d28ae7627b83bb3fd26239be\"\u003e\u003ccode\u003e05859ef\u003c/code\u003e\u003c/a\u003e implement lazy loading of heavy optional deps (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/689\"\u003e#689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/611161f54bcffa42cac313ab5c131e552fc9b2f0\"\u003e\u003ccode\u003e611161f\u003c/code\u003e\u003c/a\u003e SQLAlchemy core improvements (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/5fd16eb13fc9af0861af608bdfd5c717623ae8ba\"\u003e\u003ccode\u003e5fd16eb\u003c/code\u003e\u003c/a\u003e simple ddl support for a few new engine types (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/a0e621c1e413909086e5344dbc56e3cc8a6a57da\"\u003e\u003ccode\u003ea0e621c\u003c/code\u003e\u003c/a\u003e add Peter for reviews (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `couchbase` from 4.5.0 to 4.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fab7f5259e72e4533db0ca25cbfa46fac6388db3\"\u003e\u003ccode\u003efab7f52\u003c/code\u003e\u003c/a\u003e PYCBC-1765: Threshold Logging Optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/6362669bc6ba71194353c5a7535dd62416c5205b\"\u003e\u003ccode\u003e6362669\u003c/code\u003e\u003c/a\u003e PYCBC-1764 - Improve how client handles KV operations across the C-extension ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/f317a0fafe626f2efcd9789d2621de8fff90ecb5\"\u003e\u003ccode\u003ef317a0f\u003c/code\u003e\u003c/a\u003e PYCBC-1763: Add checks for span recording for OTel Integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/1305503f4a295b679b210c9304537c510f966630\"\u003e\u003ccode\u003e1305503\u003c/code\u003e\u003c/a\u003e PYCBC-1762: Observability Code Structure Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/7f00efbc66b7bf83ef6aa466daeed6adad740321\"\u003e\u003ccode\u003e7f00efb\u003c/code\u003e\u003c/a\u003e PYCBC-1761: Tracing \u0026amp; Metrics Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/db77ebffae28ebb317298d6e986f70f3cfe2fa12\"\u003e\u003ccode\u003edb77ebf\u003c/code\u003e\u003c/a\u003e PYCBC-1753: Client is not passing scope_name or bucket_name when using scope ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/d7bfdba616225373ab5c71466fed1d9d9fc8957d\"\u003e\u003ccode\u003ed7bfdba\u003c/code\u003e\u003c/a\u003e PYCBC-1759: Fix compounding encoding span attribute propagation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/b2fc5d9b008113f6ef533d3b285014d7c44e9076\"\u003e\u003ccode\u003eb2fc5d9\u003c/code\u003e\u003c/a\u003e PYCBC-1758: Propagate missing ClusterOptions to C++ core\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/62adf0b6a1b841266d57e65d055a86e6a726227e\"\u003e\u003ccode\u003e62adf0b\u003c/code\u003e\u003c/a\u003e PYCBC-1752: Provide ClusterOption to enable C++ core lazy KV connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fbceef9ed86af073f7f4144b5154a80a52130208\"\u003e\u003ccode\u003efbceef9\u003c/code\u003e\u003c/a\u003e Add typing-extensions dependency for Python versions \u0026lt; 3.13\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/couchbase/couchbase-python-client/compare/4.5.0...4.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elasticsearch` from 8.14.0 to 9.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/elasticsearch-py/releases\"\u003eelasticsearch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.3.0\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epack_dense_vector\u003c/code\u003e helper function to pack dense vectors for efficient uploading (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3219\"\u003e#3219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew and updated ES|QL functions in the ES|QL query builder for 9.3 and Serverless (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAPI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ecat.circuit_breaker\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eesql.get_view\u003c/code\u003e, \u003ccode\u003eesql.put_view\u003c/code\u003e and \u003ccode\u003eesql.delete_view\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eindices.get_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.put_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.delete_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_all_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_sample\u003c/code\u003e, \u003ccode\u003eindices.get_sample_stats\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003einference.put_groq\u003c/code\u003e, \u003ccode\u003einference.put_openshift_ai\u003c/code\u003e, \u003ccode\u003einference.put_nvidia\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edownsampling_method\u003c/code\u003e argument to \u003ccode\u003eindices.put_data_lifecycle\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ereturn_documents\u003c/code\u003e and \u003ccode\u003etop_n\u003c/code\u003e arguments to \u003ccode\u003einference.rerank\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eclose_job\u003c/code\u003e argument to \u003ccode\u003eml.stop_datafeed\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecertificate_identity\u003c/code\u003e to \u003ccode\u003esecurity.create_cross_cluster_api_key\u003c/code\u003e and \u003ccode\u003esecurity.update_cross_cluster_api_key\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServerless-specific\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eproject_routing\u003c/code\u003e argument to \u003ccode\u003eproject.tags\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDSL\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eNumpyDenseVector\u003c/code\u003e field, with support for dense vectors based on numpy arrays (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eExponentialHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003etime_series_metric\u003c/code\u003e argument to \u003ccode\u003eHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_disk_rescore\u003c/code\u003e argument from \u003ccode\u003eDenseVectorIndexOptions\u003c/code\u003e type\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eslices\u003c/code\u003e argument to \u003ccode\u003eUpdateByQueryResponse\u003c/code\u003e type\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.2.1\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInstrument ping with OTel (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3160\"\u003e#3160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake positional arguments in DSL generated classes explicit  (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3233\"\u003e#3233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3212\"\u003e#3212\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eES|QL query builder: fix missing assignment (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3151\"\u003e#3151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse relative imports to fix \u003ccode\u003eelasticsearch9\u003c/code\u003e package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003etransform.get_node_stats\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003erequests_per_second\u003c/code\u003e argument to \u003ccode\u003edelete_by_query_rethrottle\u003c/code\u003e, \u003ccode\u003ereindex_rethrottle\u003c/code\u003e and \u003ccode\u003eupdate_by_query_rethrottle\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eallow_closed\u003c/code\u003e, \u003ccode\u003eallow_no_indices\u003c/code\u003e, \u003ccode\u003eexpand_wildcards\u003c/code\u003e, \u003ccode\u003eignore_throttled\u003c/code\u003e and \u003ccode\u003eignore_available\u003c/code\u003e arguments to \u003ccode\u003ecat.segments\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echunking_settings\u003c/code\u003e argument to \u003ccode\u003einference.put_watsonxai\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eid\u003c/code\u003e argument to \u003ccode\u003eml.stop_trained_model_deployment\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eRemoved \u003ccode\u003echunking_settings\u003c/code\u003e argument from \u003ccode\u003einference.put_anthropic\u003c/code\u003e, \u003ccode\u003einference.put_contextualai\u003c/code\u003e, \u003ccode\u003einference.put_deepseek\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/adae2d6d3d76f3ea75cd758ce64223bd76df45e5\"\u003e\u003ccode\u003eadae2d6\u003c/code\u003e\u003c/a\u003e Release 9.3.0 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3300\"\u003e#3300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ea2227c743d7cacb474efecf4d8b84fa553f9eec\"\u003e\u003ccode\u003eea2227c\u003c/code\u003e\u003c/a\u003e Add Python 3.14 trove classifier (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3296\"\u003e#3296\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3299\"\u003e#3299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b507e3e2d91ff0b6f8fb4a53ea23caa989677436\"\u003e\u003ccode\u003eb507e3e\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3293\"\u003e#3293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/76150204725b1495cad3348c573406fc1f3512d1\"\u003e\u003ccode\u003e7615020\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3280\"\u003e#3280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ef8d102b3fc4d7572e0fd0bb56afe4291fddc529\"\u003e\u003ccode\u003eef8d102\u003c/code\u003e\u003c/a\u003e Stop using pytz (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3275\"\u003e#3275\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3278\"\u003e#3278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/65870f3504344ba7f67feb7721522bef936a92cf\"\u003e\u003ccode\u003e65870f3\u003c/code\u003e\u003c/a\u003e allow adding elasticsearch query filter for mmr searching (elastic#2638) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/32\"\u003e#32\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b110f19a49ad492d2d6aa514afaac35360ac3c93\"\u003e\u003ccode\u003eb110f19\u003c/code\u003e\u003c/a\u003e Updates to ES|QL functions for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3266\"\u003e#3266\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3272\"\u003e#3272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/f3d082788f52b5fe3c80926624fa8a61aa4deb37\"\u003e\u003ccode\u003ef3d0827\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3269\"\u003e#3269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/80818cc2640fcdf902919a3dc5500ae945d33271\"\u003e\u003ccode\u003e80818cc\u003c/code\u003e\u003c/a\u003e Auto-generated code for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3262\"\u003e#3262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/6baa03faedefc90ccbc5f902626cc8cea46aed6a\"\u003e\u003ccode\u003e6baa03f\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3252\"\u003e#3252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/elasticsearch-py/compare/v8.14.0...v9.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 3.1.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvecto-rs[sqlalchemy]` to 0.2.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tensorchord/pgvecto.rs/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymilvus` from 2.6.10 to 2.6.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/milvus-io/pymilvus/releases\"\u003epymilvus's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMilvus v2.6.12 Release Notes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efix: default to port 443 for https:// URIs in MilvusClient\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3372\"\u003e#3372\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3374\"\u003e#3374\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3369\"\u003e#3369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: remove duplicate timeout kwarg in Collection.__init__\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3378\"\u003e#3378\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/greenned\"\u003e\u003ccode\u003e@​greenned\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3370\"\u003e#3370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: ensure page_retain_order is passed to search params\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3366\"\u003e#3366\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3383\"\u003e#3383\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/alwayslove2013\"\u003e\u003ccode\u003e@​alwayslove2013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2804\"\u003e#2804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle empty result set with ARRAY field in query deserialization\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3389\"\u003e#3389\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3396\"\u003e#3396\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/karsten-reversefashion\"\u003e\u003ccode\u003e@​karsten-reversefashion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3386\"\u003e#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: infer_dtype_bydata returns UNKNOWN for list of strings instead of ARRAY\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3390\"\u003e#3390\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3397\"\u003e#3397\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/ShirohaUmi\"\u003e\u003ccode\u003e@​ShirohaUmi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2896\"\u003e#2896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: rewrite _version_helper.py to use only public setuptools_scm API\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3359\"\u003e#3359\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3379\"\u003e#3379\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: remove dead code and redundant exception handling in async_grpc_handler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3365\"\u003e#3365\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3377\"\u003e#3377\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: replace redundant raise-from-self with bare raise (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3367\"\u003e#3367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3381\"\u003e#3381\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: fix return type annotations and bare raise in connections.py (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3373\"\u003e#3373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3382\"\u003e#3382\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: remove dead fake_register_link method from GrpcHandler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3391\"\u003e#3391\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3395\"\u003e#3395\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: bump actions/checkout to v6 and actions/setup-python to v6 (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3400\"\u003e#3400\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3403\"\u003e#3403\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\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/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\"\u003ehttps://github.com/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyMilvus v2.6.11 Release Notes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efix: pass address to GrpcHandler in ConnectionManager strategies\u003c/strong\u003e — fixed Milvus Lite local path broken since 2.6.10 (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3321\"\u003e#3321\u003c/a\u003e,  \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3323\"\u003e#3323\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: prevent \u0026quot;Cannot invoke RPC on closed channel\u0026quot; after connection recovery\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3326\"\u003e#3326\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3345\"\u003e#3345\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: correct parameter name typos in QueryIterator causing partition filter bypass\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3324\"\u003e#3324\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3330\"\u003e#3330\u003c/a\u003e) by\n\u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle None response in search to prevent AttributeError\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3331\"\u003e#3331\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3332\"\u003e#3332\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: resolve bytes vector type misidentification in search path\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3334\"\u003e#3334\u003c/a\u003e) by \u003ca href=\"https://github.com/zhuwenxing\"\u003e\u003ccode\u003e@​zhuwenxing\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: guard MilvusClient._get_connection against None handler\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3337\"\u003e#3337\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3338\"\u003e#3338\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle None credentials in connections.connect()\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3343\"\u003e#3343\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3353\"\u003e#3353\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: use explicit length check for numpy array compatibility in search\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3342\"\u003e#3342\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3352\"\u003e#3352\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: clarify wrong-port guidance for UNIMPLEMENTED errors\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3315\"\u003e#3315\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3322\"\u003e#3322\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: display human-readable state and level in SegmentInfo repr\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3336\"\u003e#3336\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3355\"\u003e#3355\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: pin setuptools_scm\u0026lt;9 to prevent _types import breakage\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3348\"\u003e#3348\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures \u0026amp; Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efeat: support Python 3.14\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3306\"\u003e#3306\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3318\"\u003e#3318\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: extract _get_dim helper to deduplicate dimension lookup (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3344\"\u003e#3344\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3350\"\u003e#3350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erefactor: remove redundant \u003ccode\u003eraise ex from ex\u003c/code\u003e try/except blocks (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3341\"\u003e#3341\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3351\"\u003e#3351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erefactor: consolidate duplicate common_pb2 import in prepare.py (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3346\"\u003e#3346\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3354\"\u003e#3354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest: improve unit test coverage from 83.98% to 90% (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3313\"\u003e#3313\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3320\"\u003e#3320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: remove obsolete release_event and nightly_ci workflows (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3358\"\u003e#3358\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.11\"\u003ehttps://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.11\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/milvus-io/pymilvus/commit/09307a9ce91a0a27d0e83ce8e43b74e69a7b094e\"\u003e\u003ccode\u003e09307a9\u003c/code\u003e\u003c/a\u003e [Cherry-pick 2.6] ci: bump actions/checkout to v6 and actions/setup-python to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/2dfd20310c9f8a24cd9c3f8977853659917d0442\"\u003e\u003ccode\u003e2dfd203\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: rewrite \u003cem\u003eversion_helper.py to use only public setuptools\u003c/em\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fe3cf6d4201e3839b2655b90bbbc16299e86945\"\u003e\u003ccode\u003e8fe3cf6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: infer_dtype_bydata returns UNKNOWN for list of strings in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/3e531a3aac4bcff96e3828147bd522b20bed5a3d\"\u003e\u003ccode\u003e3e531a3\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: handle empty result set with ARRAY field in query deseria...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/87b0ba2a449a7b1653a385236a6ffe746a2fa04b\"\u003e\u003ccode\u003e87b0ba2\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: remove dead fake_register_link method from GrpcHandl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/aec3ef6738cabf0ede39ae55aa94c76a94379ea1\"\u003e\u003ccode\u003eaec3ef6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: ensure page_retain_order is passed to search params (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/336\"\u003e#336\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/e27aca78c7dd2de1f749827ce036b83585496af0\"\u003e\u003ccode\u003ee27aca7\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: fix return type annotations and bare raise in connec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fff01aa9dabc8242dca98b06b80dbf03bf53617\"\u003e\u003ccode\u003e8fff01a\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: replace redundant raise-from-self with bare raise (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/18e1610fdbd5d4df23cf240ce469ac184b51b7ab\"\u003e\u003ccode\u003e18e1610\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: remove duplicate timeout kwarg in Collection.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/0339212eccb09ae78ce03525d4c61bb10ef76cca\"\u003e\u003ccode\u003e0339212\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor(async_grpc_handler): remove dead code and redundant e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymochow` from 2.3.6 to 2.4.0\n\nUpdates `pyobvector` from 0.2.25 to 0.2.26\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oceanbase/pyobvector/releases\"\u003epyobvector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease-v0.2.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: import Expression from sqlglot.expressions for sqlglot 30+ by \u003ca href=\"https://github.com/xxsc0529\"\u003e\u003ccode\u003e@​xxsc0529\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oceanbase/pyobvector/pull/64\"\u003eoceanbase/pyobvector#64\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003ehttps://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\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/oceanbase/pyobvector/blob/main/RELEASE_NOTES.md\"\u003epyobvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003e0.2.26\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e-Fix: Compatible with the latest version of sqlglot\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/oceanbase/pyobvector/commit/6190a03e2627b8afc3bfbf79e6592141d8cf63af\"\u003e\u003ccode\u003e6190a03\u003c/code\u003e\u003c/a\u003e v0.2.26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/commit/b0a3d8c045f202017374a6ad2fc54fdfdae9dc19\"\u003e\u003ccode\u003eb0a3d8c\u003c/code\u003e\u003c/a\u003e fix: impo...\n\n_Description has been truncated_","html_url":"https://github.com/Lraviv/dify-transfer/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lraviv%2Fdify-transfer/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"},{"uuid":"4367497916","node_id":"PR_kwDOSE-lVs7Xkr9E","number":34,"state":"closed","title":"chore(deps): bump the vdb group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-08T22:18:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-02T01:48:17.000Z","updated_at":"2026-05-08T22:18:17.000Z","time_to_close":592198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"vdb","update_count":20,"packages":[{"name":"weaviate-client","old_version":"4.20.4","new_version":"4.21.0","repository_url":"https://github.com/weaviate/weaviate-python-client"},{"name":"chromadb","old_version":"0.5.20","new_version":"1.5.8","repository_url":"https://github.com/chroma-core/chroma"},{"name":"elasticsearch","old_version":"8.14.0","new_version":"9.3.0","repository_url":"https://github.com/elastic/elasticsearch-py"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pymochow","old_version":"2.3.6","new_version":"2.4.0"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [weaviate-client](https://github.com/weaviate/weaviate-python-client), [alibabacloud-gpdb20160503](https://github.com/aliyun/alibabacloud-python-sdk), [alibabacloud-tea-openapi](https://github.com/aliyun/darabonba-openapi), [chromadb](https://github.com/chroma-core/chroma), [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect), clickzetta-connector-python, [couchbase](https://github.com/couchbase/couchbase-python-client), [elasticsearch](https://github.com/elastic/elasticsearch-py), [opensearch-py](https://github.com/opensearch-project/opensearch-py), [pgvecto-rs](https://github.com/tensorchord/pgvecto.rs), [pymilvus](https://github.com/milvus-io/pymilvus), [pymochow](http://bce.baidu.com), [pyobvector](https://github.com/oceanbase/pyobvector), [qdrant-client](https://github.com/qdrant/qdrant-client), [intersystems-irispython](https://www.intersystems.com/), [tablestore](https://github.com/aliyun/aliyun-tablestore-python-sdk), tcvectordb, [volcengine-compat](https://github.com/yaoice/volc-sdk-python), [xinference-client](https://github.com/xorbitsai/inference-client) and [mysql-connector-python](https://github.com/mysql/mysql-connector-python) to permit the latest version.\nUpdates `weaviate-client` from 4.20.4 to 4.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weaviate/weaviate-python-client/releases\"\u003eweaviate-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003e1.37\u003c/code\u003e features by \u003ca href=\"https://github.com/tsmith023\"\u003e\u003ccode\u003e@​tsmith023\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1988\"\u003eweaviate/weaviate-python-client#1988\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.20.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Object TTL schema export to match server json by \u003ca href=\"https://github.com/dudanogueira\"\u003e\u003ccode\u003e@​dudanogueira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1958\"\u003eweaviate/weaviate-python-client#1958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for audio modality in multi2vec-google vectorizer config by \u003ca href=\"https://github.com/antas-marcin\"\u003e\u003ccode\u003e@​antas-marcin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1983\"\u003eweaviate/weaviate-python-client#1983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: export FilterReturn from weaviate.classes.query by \u003ca href=\"https://github.com/renaudcepre\"\u003e\u003ccode\u003e@​renaudcepre\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1993\"\u003eweaviate/weaviate-python-client#1993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: parse asyncConfig from replication config GET response by \u003ca href=\"https://github.com/jfrancoa\"\u003e\u003ccode\u003e@​jfrancoa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1996\"\u003eweaviate/weaviate-python-client#1996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: throw specific exception on empty list filters for time filters by \u003ca href=\"https://github.com/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(deps): remove unmaintained deprecation package, use stdlib instead by \u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse get() instead of direct dict access by \u003ca href=\"https://github.com/DanielJanicek\"\u003e\u003ccode\u003e@​DanielJanicek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1995\"\u003eweaviate/weaviate-python-client#1995\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/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\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/weaviate/weaviate-python-client/blob/main/docs/changelog.rst\"\u003eweaviate-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.21.0\u003c/h2\u003e\n\u003cp\u003eThis minor version includes:\n- Support for new 1.37 features:\n- Add support for the new \u003ccode\u003eblobHash\u003c/code\u003e property data type\n- Add support for returning profiling when making queries with the \u003ccode\u003ereturn_metadata=[\u0026quot;query_profile\u0026quot;]\u003c/code\u003e parameter\n- Add support for on-demaned tokenization through the \u003ccode\u003eclient.tokenize\u003c/code\u003e namespace\n- Add support for managing permissions for accessing the native MCP server\n- Add support for collection export\n- Add support for incremental backups\n- Minor bug fixes and improvements:\n- Change \u003ccode\u003ealpha\u003c/code\u003e queries and aggregations to use server-side default parameter\n- Fixes rare flakey behaviour of \u003ccode\u003eclient.batch.stream\u003c/code\u003e on server hangup\u003c/p\u003e\n\u003ch2\u003eVersion 4.20.5\u003c/h2\u003e\n\u003cp\u003eThis patch version includes:\n- Fix objectTTL config export\n- Add support for audio modality in multi2vec-google\n- Export FilterReturn from weaviate.classes.query\n- Fix updating async replication config\n- Remove unmaintained \u003ccode\u003edeprecated\u003c/code\u003e dependency\n- Throw exception on empty time filters\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/weaviate/weaviate-python-client/commit/592bc7a2805885a92c8379c3cb8162bcc6702741\"\u003e\u003ccode\u003e592bc7a\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003e1.37\u003c/code\u003e features (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/1988\"\u003e#1988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/6dce1053e148afd014e04baac6b8915e73d0211d\"\u003e\u003ccode\u003e6dce105\u003c/code\u003e\u003c/a\u003e Improve flakiness of SSB tests (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2015\"\u003e#2015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/5a32208a724a6496a146dd27d8642b9ed7a00670\"\u003e\u003ccode\u003e5a32208\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2013\"\u003e#2013\u003c/a\u003e from weaviate/fix_flaky_user_test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/feb4e4c99ce3af000cc1c7f24187640d426a301c\"\u003e\u003ccode\u003efeb4e4c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2009\"\u003e#2009\u003c/a\u003e from weaviate/dependabot/pip/pytest-9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/f2cf9658f635c8a914c2fdbf5d9659c9945ef6ea\"\u003e\u003ccode\u003ef2cf965\u003c/code\u003e\u003c/a\u003e Better variable names\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/a3a7208f725573403a9ecba6399845634b8926f4\"\u003e\u003ccode\u003ea3a7208\u003c/code\u003e\u003c/a\u003e Replace random number with unique and deterministic name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/93fff165025a2dc354687fac51ff8b52554f38a7\"\u003e\u003ccode\u003e93fff16\u003c/code\u003e\u003c/a\u003e build(deps): bump pytest from 9.0.2 to 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/4d66220f37faa5089334d98538a61b0ced709b00\"\u003e\u003ccode\u003e4d66220\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2007\"\u003e#2007\u003c/a\u003e from weaviate/changelog_4_20_5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/78fa5f7f08ea50b2a1041eecd2d010f81885922f\"\u003e\u003ccode\u003e78fa5f7\u003c/code\u003e\u003c/a\u003e Update docs/changelog.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/2af1289def1346ce6e21f1bc05d9966e42a7bf5e\"\u003e\u003ccode\u003e2af1289\u003c/code\u003e\u003c/a\u003e Changelog + reformat\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-gpdb20160503` to 5.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/alibabacloud-python-sdk/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-tea-openapi` to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/darabonba-openapi/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 0.5.20 to 1.5.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.8\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.8\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.8\u003c/code\u003e\nBuild Date: \u003ccode\u003e2026-04-16T23:35\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.5.8.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: Make materialize_logs aware of sharding by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6833\"\u003echroma-core/chroma#6833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: retry per shard instead of every shard by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6841\"\u003echroma-core/chroma#6841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Integrate seal operator for sharded collections by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6842\"\u003echroma-core/chroma#6842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Merge, sort and truncate in FE by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6846\"\u003echroma-core/chroma#6846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Prefetch per shard by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6850\"\u003echroma-core/chroma#6850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Create per-tenant config in the compactor for shard sizes by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6847\"\u003echroma-core/chroma#6847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: support partial manifest scans by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6799\"\u003echroma-core/chroma#6799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Replace join_all with buffered_unordered with a limit in block loads by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6854\"\u003echroma-core/chroma#6854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add pod anti-affinity support to StatefulSet helm templates by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6859\"\u003echroma-core/chroma#6859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Disable stall protection for reads. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6858\"\u003echroma-core/chroma#6858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove fanout in writer by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6861\"\u003echroma-core/chroma#6861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Make the most recent log spanner-migration idempotent. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6863\"\u003echroma-core/chroma#6863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/config\"\u003eENH\u003c/a\u003e: make admin RPC timeout configurable by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6864\"\u003echroma-core/chroma#6864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add CLI I/O terminal for testing by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6860\"\u003echroma-core/chroma#6860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Fix missing word in manage-collections documentation by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6873\"\u003echroma-core/chroma#6873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Composite rules for tiering by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6876\"\u003echroma-core/chroma#6876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add I/O abstraction to CLI commands by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6877\"\u003echroma-core/chroma#6877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Add member_id to node_name lookup in ClientAssigner by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6875\"\u003echroma-core/chroma#6875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: get_prefix use buffer ordered by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6893\"\u003echroma-core/chroma#6893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Revert \u0026quot;[CLN] Remove compaction_client binary (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6744\"\u003e#6744\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6901\"\u003echroma-core/chroma#6901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add config store abstraction to CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6879\"\u003echroma-core/chroma#6879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add Superlinked embedding function integration by \u003ca href=\"https://github.com/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add MCMR property tests and fix dirty log detection by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6835\"\u003echroma-core/chroma#6835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update stars/followers count by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6908\"\u003echroma-core/chroma#6908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make compaction client grpc timeout configurable by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6902\"\u003echroma-core/chroma#6902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/faults\"\u003eENH\u003c/a\u003e: add fault injection control plane by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6795\"\u003echroma-core/chroma#6795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Change retry rate limits in s3 client by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6917\"\u003echroma-core/chroma#6917\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6849\"\u003echroma-core/chroma#6849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use the official Rust client in the CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6906\"\u003echroma-core/chroma#6906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndBoundedWal read level by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6914\"\u003echroma-core/chroma#6914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndAdaptiveWal to clients by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6918\"\u003echroma-core/chroma#6918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6921\"\u003echroma-core/chroma#6921\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/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\"\u003ehttps://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.7\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.7\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.7\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/124a6cb7331cda1efc48a48390c25409fce22423\"\u003e\u003ccode\u003e124a6cb\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6921\"\u003e#6921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/0367cb4de40b79ac838770c3e04ec921808b10b2\"\u003e\u003ccode\u003e0367cb4\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndAdaptiveWal to clients (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6918\"\u003e#6918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f749f58f881830ad5ed4d728529b5d491656f825\"\u003e\u003ccode\u003ef749f58\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndBoundedWal read level (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6914\"\u003e#6914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/db9a8bd595409f26a83ac2eca8ab3c4e9e168bee\"\u003e\u003ccode\u003edb9a8bd\u003c/code\u003e\u003c/a\u003e [ENH] Use the official Rust client in the CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6906\"\u003e#6906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f9a7f68f24501ce00ad8e1a9200993331458a8ee\"\u003e\u003ccode\u003ef9a7f68\u003c/code\u003e\u003c/a\u003e \u003ca href=\"wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6849\"\u003e#6849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/c94eb76bcea0f3153bb8f7058b173abfb401e24e\"\u003e\u003ccode\u003ec94eb76\u003c/code\u003e\u003c/a\u003e [ENH]: Change retry rate limits in s3 client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6917\"\u003e#6917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a760f7ecb934e29c6d308cecc2dc413e359e89f2\"\u003e\u003ccode\u003ea760f7e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"faults\"\u003eENH\u003c/a\u003e: add fault injection control plane (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6795\"\u003e#6795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a5a919a6ac849b55c6922e13204e97504945474a\"\u003e\u003ccode\u003ea5a919a\u003c/code\u003e\u003c/a\u003e [ENH]: Make compaction client grpc timeout configurable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6902\"\u003e#6902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/47b29487b656135209221418a9efcc545a2723af\"\u003e\u003ccode\u003e47b2948\u003c/code\u003e\u003c/a\u003e [ENH] Update stars/followers count (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6908\"\u003e#6908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/71afcf0b4294f8fe2d4d1bd2aaaf1ff4f4791446\"\u003e\u003ccode\u003e71afcf0\u003c/code\u003e\u003c/a\u003e [ENH] add MCMR property tests and fix dirty log detection (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/0.5.20...1.5.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clickhouse-connect` to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/releases\"\u003eclickhouse-connect's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.15.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\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/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md\"\u003eclickhouse-connect's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1, 2026-03-30\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Previously, \u003ccode\u003ebind_query\u003c/code\u003e always converted datetimes to the server timezone, ignoring explicit timezone declarations in type hints like \u003ccode\u003eDateTime64(6, 'UTC')\u003c/code\u003e. This caused incorrect query results when \u003ccode\u003eserver_tz\u003c/code\u003e differed from the hint timezone. Handles \u003ccode\u003eLowCardinality\u003c/code\u003e, \u003ccode\u003eNullable\u003c/code\u003e, and container type wrappers. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.0, 2026-03-26\u003c/h2\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Comprehensive ClickHouse JOIN support via the new \u003ccode\u003ech_join()\u003c/code\u003e helper. All strictness modifiers (\u003ccode\u003eALL\u003c/code\u003e, \u003ccode\u003eANY\u003c/code\u003e, \u003ccode\u003eSEMI\u003c/code\u003e, \u003ccode\u003eANTI\u003c/code\u003e, \u003ccode\u003eASOF\u003c/code\u003e), the \u003ccode\u003eGLOBAL\u003c/code\u003e distribution modifier, and explicit \u003ccode\u003eCROSS JOIN\u003c/code\u003e are now available. Use with \u003ccode\u003eselect_from()\u003c/code\u003e to generate ClickHouse-specific join syntax like \u003ccode\u003eGLOBAL ALL LEFT OUTER JOIN\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/635\"\u003e#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003earray_join()\u003c/code\u003e now supports multiple columns for parallel array expansion. Pass a list of columns and a matching list of aliases to generate \u003ccode\u003eARRAY JOIN col1 AS a, col2 AS b, col3 AS c\u003c/code\u003e. Single-column usage is unchanged. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/633\"\u003e#633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003ech_join()\u003c/code\u003e now supports \u003ccode\u003eUSING\u003c/code\u003e syntax via the new \u003ccode\u003eusing\u003c/code\u003e parameter. Pass a list of column name strings to generate \u003ccode\u003eUSING (col1, col2)\u003c/code\u003e instead of \u003ccode\u003eON\u003c/code\u003e. This is important for \u003ccode\u003eFULL OUTER JOIN\u003c/code\u003e where \u003ccode\u003eUSING\u003c/code\u003e merges the join column correctly while \u003ccode\u003eON\u003c/code\u003e produces default values (0, '') for unmatched sides. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/636\"\u003e#636\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Add missing Replicated table engine variants: \u003ccode\u003eReplicatedReplacingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedCollapsingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedVersionedCollapsingMergeTree\u003c/code\u003e, and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/687\"\u003e#687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazy imports for optional dependencies (numpy, pandas, pyarrow, polars). If installed, these heavy libraries are no longer imported at \u003ccode\u003eimport clickhouse_connect\u003c/code\u003e time. They are only imported when features that need them are actually used. The C/Numpy optimization bridge is also deferred. This speeds up bare import time of \u003ccode\u003eclickhouse-connect\u003c/code\u003e about 4X in environments where all four are installed. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/589\"\u003e#589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003epy.typed\u003c/code\u003e marker file. The package does not have comprehensive type annotations, so the PEP 561 marker was causing false type errors for mypy/pyright users. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/691\"\u003e#691\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003e.final()\u003c/code\u003e and \u003ccode\u003e.sample()\u003c/code\u003e silently overwriting each other when chained. Both methods now store modifiers as custom attributes on the \u003ccode\u003eSelect\u003c/code\u003e instance and render them during compilation, replacing the previous \u003ccode\u003ewith_hint()\u003c/code\u003e approach that only allowed one hint per table. Chaining in either order (e.g. \u003ccode\u003eselect(t).final().sample(0.1)\u003c/code\u003e) correctly produces \u003ccode\u003eFROM t FINAL SAMPLE 0.1\u003c/code\u003e. Also fixes rendering for aliased tables (\u003ccode\u003eFROM t AS u FINAL\u003c/code\u003e) and supports explicit table targeting in joins. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/658\"\u003e#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003esqlalchemy.values()\u003c/code\u003e to generate ClickHouse's \u003ccode\u003eVALUES\u003c/code\u003e table function syntax. The compiler now emits \u003ccode\u003eVALUES('col1 Type1, col2 Type2', ...)\u003c/code\u003e with the column structure as the first argument, instead of the standard SQL form that places column names after the alias. Generic SQLAlchemy types are mapped to ClickHouse equivalents (e.g. \u003ccode\u003eInteger\u003c/code\u003e to \u003ccode\u003eInt32\u003c/code\u003e, \u003ccode\u003eString\u003c/code\u003e to \u003ccode\u003eString\u003c/code\u003e). Also handles CTE usage by wrapping in \u003ccode\u003eSELECT * FROM VALUES(...)\u003c/code\u003e. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/681\"\u003e#681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003eGraphiteMergeTree\u003c/code\u003e and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e to properly single-quote the \u003ccode\u003econfig_section\u003c/code\u003e argument as ClickHouse requires.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.1, 2026-03-11\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix JSON and Dynamic column read paths to properly decode shared variant data instead of returning raw binary with discriminator byte prefixes. Shared data values, used when paths exceed \u003ccode\u003emax_dynamic_paths\u003c/code\u003e or types exceed \u003ccode\u003emax_dynamic_types\u003c/code\u003e are now decoded from ClickHouse's binary variant encoding. Scalar types like integers, floats, strings, booleans, and nulls as well as nested objects are now fully decoded. Compound types like Array, Tuple, Map, DateTime, Date, Decimal, and UUID are not yet decoded and will be returned as raw bytes. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/599\"\u003e#599\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/615\"\u003e#615\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/674\"\u003e#674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fixed empty ORM/DBAPI SELECT results so \u003ccode\u003ecursor.description\u003c/code\u003e is still populated when ClickHouse Native format returns no data blocks. This restores correct handling for empty result sets, including parameterized and limited queries. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/675\"\u003e#675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore the default Cython runtime path so compiled \u003ccode\u003edriverc\u003c/code\u003e modules are used again unless \u003ccode\u003eCLICKHOUSE_CONNECT_USE_C=0\u003c/code\u003e is set. Fix C/Python parity issues in streaming exception handling, \u003ccode\u003eFixedString\u003c/code\u003e string reads, nullable array helpers, and numpy conversion helpers, and expand CI and unit parity coverage to keep the optimized and pure-Python paths in sync. Addresses \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/676\"\u003e#676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003epivot\u003c/code\u003e in the Cython data conversion module to use \u003ccode\u003etuple(zip(*...))\u003c/code\u003e instead of a manual tuple-building loop which matches the pure-Python implementation and provides significant insert speedup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.0, 2026-03-09\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003eapply_server_timezone\u003c/code\u003e parameter to \u003ccode\u003etz_source\u003c/code\u003e across Client and HttpClient. The new \u003ccode\u003etz_source\u003c/code\u003e parameter accepts string values: \u003ccode\u003e\u0026quot;auto\u0026quot;\u003c/code\u003e (default, was \u003ccode\u003eNone\u003c/code\u003e), \u003ccode\u003e\u0026quot;server\u0026quot;\u003c/code\u003e (was \u003ccode\u003eTrue\u003c/code\u003e or \u003ccode\u003e\u0026quot;always\u0026quot;\u003c/code\u003e), and \u003ccode\u003e\u0026quot;local\u0026quot;\u003c/code\u003e (was \u003ccode\u003eFalse\u003c/code\u003e). The old \u003ccode\u003eapply_server_timezone\u003c/code\u003e parameter is still accepted but emits a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and will be removed in 1.0. Passing both \u003ccode\u003etz_source\u003c/code\u003e and \u003ccode\u003eapply_server_timezone\u003c/code\u003e raises \u003ccode\u003eProgrammingError\u003c/code\u003e. The \u003ccode\u003e\u0026quot;always\u0026quot;\u003c/code\u003e value (which had no distinct runtime behavior from \u003ccode\u003eTrue\u003c/code\u003e) maps to \u003ccode\u003e\u0026quot;server\u0026quot;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRenamed \u003ccode\u003eutc_tz_aware\u003c/code\u003e parameter to \u003ccode\u003etz_mode\u003c/code\u003e across Client, QueryContext, and all query methods. The new \u003ccode\u003etz_mode\u003c/code\u003e parameter accepts string values: \u003ccode\u003e\u0026quot;naive_utc\u0026quot;\u003c/code\u003e (default, was \u003ccode\u003eFalse\u003c/code\u003e), \u003ccode\u003e\u0026quot;aware\u0026quot;\u003c/code\u003e (was \u003ccode\u003eTrue\u003c/code\u003e), and \u003ccode\u003e\u0026quot;schema\u0026quot;\u003c/code\u003e (unchanged). The old \u003ccode\u003eutc_tz_aware\u003c/code\u003e parameter is still accepted but emits a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and will be removed in 1.0. Passing both \u003ccode\u003etz_mode\u003c/code\u003e and \u003ccode\u003eutc_tz_aware\u003c/code\u003e raises \u003ccode\u003eProgrammingError\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/654\"\u003e#654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eObject('json')\u003c/code\u003e type. This was the legacy experimental JSON type that has been superseded by the new \u003ccode\u003eJSON\u003c/code\u003e type in ClickHouse. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/556\"\u003e#556\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePandas 1.x support is now deprecated and will be removed in v1.0.0. A \u003ccode\u003eDeprecationWarning\u003c/code\u003e is emitted at import time for pandas 1.x users.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for the \u003ccode\u003eSAMPLE\u003c/code\u003e clause in SQLAlchemy statements. Note: Due to a SQLAlchemy limitation, only one hint (SAMPLE or FINAL) can be applied per table; chaining both will silently ignore one. For now, this change enables use of sample(), but chaining with final() is not yet supported.  Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/634\"\u003e#634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExperimental:\u003c/strong\u003e Added Python 3.14 free-threading (cp314t) wheel builds for all platforms. The full test suite currently (as of 2 MAR, 2026) passes under free-threaded Python, but is not added to the CI test matrix at this time nor has it been otherwise tested to any degree. Free-threading support should be considered experimental with no guarantees of correctness at this time. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/573\"\u003e#573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.13.0, 2026-02-26\u003c/h2\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBREAKING CHANGE: Implement native write path for \u003ccode\u003eVariant\u003c/code\u003e data type with type-aware dispatching.\nPreviously, all values inserted into a \u003ccode\u003eVariant\u003c/code\u003e column were stringified and sent to the server, which\nwould store them in the \u003ccode\u003eString\u003c/code\u003e member if present, or attempt server-side conversion otherwise. Values\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05ec766c6c336812d1307eb49df33ba954cebb3d\"\u003e\u003ccode\u003e05ec766\u003c/code\u003e\u003c/a\u003e respect bind param tz type hints, bf release 0.15.1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/c4c2a4e2e1a6b1b54eff4e3effda4eab0781b0eb\"\u003e\u003ccode\u003ec4c2a4e\u003c/code\u003e\u003c/a\u003e 0.15.0 release prep (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/cd8cbf48b01ebb68959745aa223f256240d0fe94\"\u003e\u003ccode\u003ecd8cbf4\u003c/code\u003e\u003c/a\u003e Joe/remove pytyped and other small cleanup issues (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05859efdd18e4ec0d28ae7627b83bb3fd26239be\"\u003e\u003ccode\u003e05859ef\u003c/code\u003e\u003c/a\u003e implement lazy loading of heavy optional deps (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/689\"\u003e#689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/611161f54bcffa42cac313ab5c131e552fc9b2f0\"\u003e\u003ccode\u003e611161f\u003c/code\u003e\u003c/a\u003e SQLAlchemy core improvements (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/5fd16eb13fc9af0861af608bdfd5c717623ae8ba\"\u003e\u003ccode\u003e5fd16eb\u003c/code\u003e\u003c/a\u003e simple ddl support for a few new engine types (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/a0e621c1e413909086e5344dbc56e3cc8a6a57da\"\u003e\u003ccode\u003ea0e621c\u003c/code\u003e\u003c/a\u003e add Peter for reviews (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clickzetta-connector-python` to 0.8.109\n\nUpdates `couchbase` to 4.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fab7f5259e72e4533db0ca25cbfa46fac6388db3\"\u003e\u003ccode\u003efab7f52\u003c/code\u003e\u003c/a\u003e PYCBC-1765: Threshold Logging Optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/6362669bc6ba71194353c5a7535dd62416c5205b\"\u003e\u003ccode\u003e6362669\u003c/code\u003e\u003c/a\u003e PYCBC-1764 - Improve how client handles KV operations across the C-extension ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/f317a0fafe626f2efcd9789d2621de8fff90ecb5\"\u003e\u003ccode\u003ef317a0f\u003c/code\u003e\u003c/a\u003e PYCBC-1763: Add checks for span recording for OTel Integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/1305503f4a295b679b210c9304537c510f966630\"\u003e\u003ccode\u003e1305503\u003c/code\u003e\u003c/a\u003e PYCBC-1762: Observability Code Structure Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/7f00efbc66b7bf83ef6aa466daeed6adad740321\"\u003e\u003ccode\u003e7f00efb\u003c/code\u003e\u003c/a\u003e PYCBC-1761: Tracing \u0026amp; Metrics Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/db77ebffae28ebb317298d6e986f70f3cfe2fa12\"\u003e\u003ccode\u003edb77ebf\u003c/code\u003e\u003c/a\u003e PYCBC-1753: Client is not passing scope_name or bucket_name when using scope ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/d7bfdba616225373ab5c71466fed1d9d9fc8957d\"\u003e\u003ccode\u003ed7bfdba\u003c/code\u003e\u003c/a\u003e PYCBC-1759: Fix compounding encoding span attribute propagation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/b2fc5d9b008113f6ef533d3b285014d7c44e9076\"\u003e\u003ccode\u003eb2fc5d9\u003c/code\u003e\u003c/a\u003e PYCBC-1758: Propagate missing ClusterOptions to C++ core\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/62adf0b6a1b841266d57e65d055a86e6a726227e\"\u003e\u003ccode\u003e62adf0b\u003c/code\u003e\u003c/a\u003e PYCBC-1752: Provide ClusterOption to enable C++ core lazy KV connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fbceef9ed86af073f7f4144b5154a80a52130208\"\u003e\u003ccode\u003efbceef9\u003c/code\u003e\u003c/a\u003e Add typing-extensions dependency for Python versions \u0026lt; 3.13\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/couchbase/couchbase-python-client/compare/4.5.0...4.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elasticsearch` from 8.14.0 to 9.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/elasticsearch-py/releases\"\u003eelasticsearch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.3.0\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epack_dense_vector\u003c/code\u003e helper function to pack dense vectors for efficient uploading (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3219\"\u003e#3219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew and updated ES|QL functions in the ES|QL query builder for 9.3 and Serverless (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAPI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ecat.circuit_breaker\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eesql.get_view\u003c/code\u003e, \u003ccode\u003eesql.put_view\u003c/code\u003e and \u003ccode\u003eesql.delete_view\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eindices.get_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.put_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.delete_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_all_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_sample\u003c/code\u003e, \u003ccode\u003eindices.get_sample_stats\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003einference.put_groq\u003c/code\u003e, \u003ccode\u003einference.put_openshift_ai\u003c/code\u003e, \u003ccode\u003einference.put_nvidia\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edownsampling_method\u003c/code\u003e argument to \u003ccode\u003eindices.put_data_lifecycle\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ereturn_documents\u003c/code\u003e and \u003ccode\u003etop_n\u003c/code\u003e arguments to \u003ccode\u003einference.rerank\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eclose_job\u003c/code\u003e argument to \u003ccode\u003eml.stop_datafeed\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecertificate_identity\u003c/code\u003e to \u003ccode\u003esecurity.create_cross_cluster_api_key\u003c/code\u003e and \u003ccode\u003esecurity.update_cross_cluster_api_key\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServerless-specific\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eproject_routing\u003c/code\u003e argument to \u003ccode\u003eproject.tags\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDSL\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eNumpyDenseVector\u003c/code\u003e field, with support for dense vectors based on numpy arrays (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eExponentialHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003etime_series_metric\u003c/code\u003e argument to \u003ccode\u003eHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_disk_rescore\u003c/code\u003e argument from \u003ccode\u003eDenseVectorIndexOptions\u003c/code\u003e type\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eslices\u003c/code\u003e argument to \u003ccode\u003eUpdateByQueryResponse\u003c/code\u003e type\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.2.1\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInstrument ping with OTel (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3160\"\u003e#3160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake positional arguments in DSL generated classes explicit  (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3233\"\u003e#3233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3212\"\u003e#3212\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eES|QL query builder: fix missing assignment (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3151\"\u003e#3151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse relative imports to fix \u003ccode\u003eelasticsearch9\u003c/code\u003e package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003etransform.get_node_stats\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003erequests_per_second\u003c/code\u003e argument to \u003ccode\u003edelete_by_query_rethrottle\u003c/code\u003e, \u003ccode\u003ereindex_rethrottle\u003c/code\u003e and \u003ccode\u003eupdate_by_query_rethrottle\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eallow_closed\u003c/code\u003e, \u003ccode\u003eallow_no_indices\u003c/code\u003e, \u003ccode\u003eexpand_wildcards\u003c/code\u003e, \u003ccode\u003eignore_throttled\u003c/code\u003e and \u003ccode\u003eignore_available\u003c/code\u003e arguments to \u003ccode\u003ecat.segments\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echunking_settings\u003c/code\u003e argument to \u003ccode\u003einference.put_watsonxai\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eid\u003c/code\u003e argument to \u003ccode\u003eml.stop_trained_model_deployment\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eRemoved \u003ccode\u003echunking_settings\u003c/code\u003e argument from \u003ccode\u003einference.put_anthropic\u003c/code\u003e, \u003ccode\u003einference.put_contextualai\u003c/code\u003e, \u003ccode\u003einference.put_deepseek\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/adae2d6d3d76f3ea75cd758ce64223bd76df45e5\"\u003e\u003ccode\u003eadae2d6\u003c/code\u003e\u003c/a\u003e Release 9.3.0 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3300\"\u003e#3300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ea2227c743d7cacb474efecf4d8b84fa553f9eec\"\u003e\u003ccode\u003eea2227c\u003c/code\u003e\u003c/a\u003e Add Python 3.14 trove classifier (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3296\"\u003e#3296\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3299\"\u003e#3299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b507e3e2d91ff0b6f8fb4a53ea23caa989677436\"\u003e\u003ccode\u003eb507e3e\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3293\"\u003e#3293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/76150204725b1495cad3348c573406fc1f3512d1\"\u003e\u003ccode\u003e7615020\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3280\"\u003e#3280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ef8d102b3fc4d7572e0fd0bb56afe4291fddc529\"\u003e\u003ccode\u003eef8d102\u003c/code\u003e\u003c/a\u003e Stop using pytz (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3275\"\u003e#3275\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3278\"\u003e#3278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/65870f3504344ba7f67feb7721522bef936a92cf\"\u003e\u003ccode\u003e65870f3\u003c/code\u003e\u003c/a\u003e allow adding elasticsearch query filter for mmr searching (elastic#2638) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/32\"\u003e#32\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b110f19a49ad492d2d6aa514afaac35360ac3c93\"\u003e\u003ccode\u003eb110f19\u003c/code\u003e\u003c/a\u003e Updates to ES|QL functions for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3266\"\u003e#3266\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3272\"\u003e#3272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/f3d082788f52b5fe3c80926624fa8a61aa4deb37\"\u003e\u003ccode\u003ef3d0827\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3269\"\u003e#3269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/80818cc2640fcdf902919a3dc5500ae945d33271\"\u003e\u003ccode\u003e80818cc\u003c/code\u003e\u003c/a\u003e Auto-generated code for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3262\"\u003e#3262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/6baa03faedefc90ccbc5f902626cc8cea46aed6a\"\u003e\u003ccode\u003e6baa03f\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3252\"\u003e#3252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/elasticsearch-py/compare/v8.14.0...v9.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 3.1.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvecto-rs` to 0.2.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tensorchord/pgvecto.rs/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymilvus` to 2.6.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/milvus-io/pymilvus/releases\"\u003epymilvus's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMilvus v2.6.12 Release Notes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efix: default to port 443 for https:// URIs in MilvusClient\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3372\"\u003e#3372\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3374\"\u003e#3374\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3369\"\u003e#3369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: remove duplicate timeout kwarg in Collection.__init__\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3378\"\u003e#3378\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/greenned\"\u003e\u003ccode\u003e@​greenned\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3370\"\u003e#3370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: ensure page_retain_order is passed to search params\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3366\"\u003e#3366\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3383\"\u003e#3383\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/alwayslove2013\"\u003e\u003ccode\u003e@​alwayslove2013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2804\"\u003e#2804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle empty result set with ARRAY field in query deserialization\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3389\"\u003e#3389\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3396\"\u003e#3396\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/karsten-reversefashion\"\u003e\u003ccode\u003e@​karsten-reversefashion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3386\"\u003e#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: infer_dtype_bydata returns UNKNOWN for list of strings instead of ARRAY\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3390\"\u003e#3390\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3397\"\u003e#3397\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/ShirohaUmi\"\u003e\u003ccode\u003e@​ShirohaUmi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2896\"\u003e#2896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: rewrite _version_helper.py to use only public setuptools_scm API\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3359\"\u003e#3359\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3379\"\u003e#3379\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: remove dead code and redundant exception handling in async_grpc_handler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3365\"\u003e#3365\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3377\"\u003e#3377\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: replace redundant raise-from-self with bare raise (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3367\"\u003e#3367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3381\"\u003e#3381\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: fix return type annotations and bare raise in connections.py (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3373\"\u003e#3373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3382\"\u003e#3382\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: remove dead fake_register_link method from GrpcHandler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3391\"\u003e#3391\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3395\"\u003e#3395\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: bump actions/checkout to v6 and actions/setup-python to v6 (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3400\"\u003e#3400\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3403\"\u003e#3403\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\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/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\"\u003ehttps://github.com/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\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/milvus-io/pymilvus/commit/09307a9ce91a0a27d0e83ce8e43b74e69a7b094e\"\u003e\u003ccode\u003e09307a9\u003c/code\u003e\u003c/a\u003e [Cherry-pick 2.6] ci: bump actions/checkout to v6 and actions/setup-python to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/2dfd20310c9f8a24cd9c3f8977853659917d0442\"\u003e\u003ccode\u003e2dfd203\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: rewrite \u003cem\u003eversion_helper.py to use only public setuptools\u003c/em\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fe3cf6d4201e3839b2655b90bbbc16299e86945\"\u003e\u003ccode\u003e8fe3cf6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: infer_dtype_bydata returns UNKNOWN for list of strings in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/3e531a3aac4bcff96e3828147bd522b20bed5a3d\"\u003e\u003ccode\u003e3e531a3\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: handle empty result set with ARRAY field in query deseria...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/87b0ba2a449a7b1653a385236a6ffe746a2fa04b\"\u003e\u003ccode\u003e87b0ba2\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: remove dead fake_register_link method from GrpcHandl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/aec3ef6738cabf0ede39ae55aa94c76a94379ea1\"\u003e\u003ccode\u003eaec3ef6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: ensure page_retain_order is passed to search params (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/336\"\u003e#336\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/e27aca78c7dd2de1f749827ce036b83585496af0\"\u003e\u003ccode\u003ee27aca7\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: fix return type annotations and bare raise in connec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fff01aa9dabc8242dca98b06b80dbf03bf53617\"\u003e\u003ccode\u003e8fff01a\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: replace redundant raise-from-self with bare raise (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/18e1610fdbd5d4df23cf240ce469ac184b51b7ab\"\u003e\u003ccode\u003e18e1610\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: remove duplicate timeout kwarg in Collection.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/0339212eccb09ae78ce03525d4c61bb10ef76cca\"\u003e\u003ccode\u003e0339212\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor(async_grpc_handler): remove dead code and redundant e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymochow` from 2.3.6 to 2.4.0\n\nUpdates `pyobvector` to 0.2.26\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oceanbase/pyobvector/releases\"\u003epyobvector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease-v0.2.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: import Expression from sqlglot.expressions for sqlglot 30+ by \u003ca href=\"https://github.com/xxsc0529\"\u003e\u003ccode\u003e@​xxsc0529\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oceanbase/pyobvector/pull/64\"\u003eoceanbase/pyobvector#64\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003ehttps://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\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/oceanbase/pyobvector/blob/main/RELEASE_NOTES.md\"\u003epyobvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003e0.2.26\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e-Fix: Compatible with the latest version of sqlglot\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.24...release-v0.2.25\"\u003e0.2.25\u003c/a\u003e - 2026-03-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: preserve table options when adding sparse vector indexes\u003c/li\u003e\n\u003cli\u003eFeat: ObClient embedded SeekDB support, docs, tests and CI\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.23...release-v0.2.24\"\u003e0.2.24\u003c/a\u003e - 2026-02-05\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: preserve table options when adding sparse vector indexes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.22...release-v0.2.23\"\u003e0.2.23\u003c/a\u003e - 2026-01-29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCchore: intro pre commit\u003c/li\u003e\n\u003cli\u003eFix: make SeekDB version check case-insensitive\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.21...release-v0.2.22\"\u003e0.2.22\u003c/a\u003e - 2026-01-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: HybridSearch.search() crashes when OceanBase returns NULL for empty results\u003c/li\u003e\n\u003cli\u003eFeat: add **kwargs support to create_table_with_index_params for heap organization\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.20...release-v0.2.21\"\u003e0.2.21\u003c/a\u003e - 2026-01-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate tool.poetry section to project section following PEP 518\u003c/li\u003e\n\u003cli\u003euse [dependency-groups] as PEP 735 defined\u003c/li\u003e\n\u003cli\u003eFeat: Add full-text index type support\u003c/li\u003e\n\u003cli\u003eFix typo in word partition\u003c/li\u003e\n\u003cli\u003eAlign required python versions and test on python version matrix\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.19...release-v0.2.20\"\u003e0.2.20\u003c/a\u003e - 2025-11-20\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport seekdb sparse vector index\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.18...release-v0.2.19\"\u003e0.2.19\u003c/a\u003e - 2025-11-10\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SeekDB version check\u003c/li\u003e\n\u003cli\u003eDocs: add hybrid search documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.17...release-v0.2.18\"\u003e0.2.18\u003c/a\u003e ...\n\n_Description has been truncated_","html_url":"https://github.com/gokool-hiva/Dify-Gokool/pull/34","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokool-hiva%2FDify-Gokool/issues/34","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/34/packages"},{"uuid":"4343876692","node_id":"PR_kwDOCZ34ec7WXpZT","number":44165,"state":"open","title":"Bump opensearch-py from 3.1.0 to 3.2.0 in /docker/elasticsearch","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-28T14:19:47.000Z","updated_at":"2026-05-10T11:38:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/docker/elasticsearch","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 3.1.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\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/demisto/dockerfiles/pull/44165","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/demisto%2Fdockerfiles/issues/44165","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/44165/packages"},{"uuid":"4341899826","node_id":"PR_kwDOL7kQEs7WRHKj","number":1011,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-05T09:06:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-28T09:07:47.000Z","updated_at":"2026-05-05T09:06:48.000Z","time_to_close":604739,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":2,"packages":[{"name":"langchain-core","old_version":"1.3.0","new_version":"1.3.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 2 updates in the /lib/rag/layer directory: [langchain-core](https://github.com/langchain-ai/langchain) and [opensearch-py](https://github.com/opensearch-project/opensearch-py).\n\nUpdates `langchain-core` from 1.3.0 to 1.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.3.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36990\"\u003e#36990\u003c/a\u003e)\nfeat(core): add content-block-centric streaming (v2) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36834\"\u003e#36834\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.0\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36972\"\u003e#36972\u003c/a\u003e)\nfeat(core): allow _format_output to pass through list of ToolOutputMixin instances (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36963\"\u003e#36963\u003c/a\u003e)\nchore: bump nbconvert from 7.17.0 to 7.17.1 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36923\"\u003e#36923\u003c/a\u003e)\nfeat(core): Update inheritance behavior for tracer metadata for special keys (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36900\"\u003e#36900\u003c/a\u003e)\nchore: bump langsmith from 0.7.13 to 0.7.31 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36813\"\u003e#36813\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/langchain-ai/langchain/commit/fa0f0d8efa54005b9256f8d4b28d1ff770372901\"\u003e\u003ccode\u003efa0f0d8\u003c/code\u003e\u003c/a\u003e release(core): 1.3.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36990\"\u003e#36990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9ce72eba9f6b3961d469a70b1b1980543f4cca91\"\u003e\u003ccode\u003e9ce72eb\u003c/code\u003e\u003c/a\u003e feat(core): add content-block-centric streaming (v2) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36834\"\u003e#36834\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/889a45b664638ef646fa58257cfe263d44cb6c6a\"\u003e\u003ccode\u003e889a45b\u003c/code\u003e\u003c/a\u003e ci(infra): overlay local \u003ccode\u003elangchain-*\u003c/code\u003e installs for external partners (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36989\"\u003e#36989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ffaac42bf9e345ec1096d38965f36542a7b0467a\"\u003e\u003ccode\u003effaac42\u003c/code\u003e\u003c/a\u003e ci(infra): add \u003ccode\u003epytest-xdist\u003c/code\u003e to partner test groups (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36988\"\u003e#36988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/cc2feb1aea239556fa427fd8bdabbae60f8279a6\"\u003e\u003ccode\u003ecc2feb1\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36982\"\u003e#36982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3dd0ad958eb2d5a51a4055e104598bb26aeb3b65\"\u003e\u003ccode\u003e3dd0ad9\u003c/code\u003e\u003c/a\u003e release(fireworks): 1.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36978\"\u003e#36978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7b09eb7bda4dbe99615ff5e5f74539aea682d718\"\u003e\u003ccode\u003e7b09eb7\u003c/code\u003e\u003c/a\u003e fix(fireworks): honor \u003ccode\u003emax_retries\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36973\"\u003e#36973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/d30ef8a8aa2edd47c614838c6be362456be5c2a5\"\u003e\u003ccode\u003ed30ef8a\u003c/code\u003e\u003c/a\u003e feat(fireworks): populate \u003ccode\u003eusage_metadata\u003c/code\u003e on streaming (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36977\"\u003e#36977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2715a7499a642c99901e6cfe5e9a6ea3aecedb0f\"\u003e\u003ccode\u003e2715a74\u003c/code\u003e\u003c/a\u003e fix(fireworks): swap undeployed Kimi K2 slug in integration tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36975\"\u003e#36975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2d3b49162caca316d9a24286421737471ea9e388\"\u003e\u003ccode\u003e2d3b491\u003c/code\u003e\u003c/a\u003e ci(infra): shorten working-directory dropdown labels (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36974\"\u003e#36974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.3.0...langchain-core==1.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 3.1.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\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/awslabs/LISA/pull/1011","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/1011","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1011/packages"},{"uuid":"4339675442","node_id":"PR_kwDOR3Iwlc7WJ-Ko","number":75,"state":"open","title":"chore(deps): update opensearch-py requirement from \u003e=2.8.0 to \u003e=3.2.0","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-28T00:23:49.000Z","updated_at":"2026-04-28T00:23:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"opensearch-py","old_version":"\u003e=2.8.0","new_version":"\u003e=3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.2.0\"\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/aenealabs/aura/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aenealabs%2Faura/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"},{"uuid":"4284024828","node_id":"PR_kwDOLvDAr87TYleW","number":433,"state":"closed","title":"Bump the production-dependencies group across 2 directories with 9 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-01T14:52:25.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-17T16:35:02.000Z","updated_at":"2026-05-01T14:52:27.000Z","time_to_close":1203443,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":9,"packages":[{"name":"apscheduler","old_version":"3.11.0","new_version":"3.11.2","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"newspaper4k","old_version":"0.9.3.1","new_version":"0.9.5","repository_url":"https://github.com/AndyTheFactory/newspaper4k"},{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pypdf","old_version":"6.7.1","new_version":"6.10.2","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"scrapy","old_version":"2.14.1","new_version":"2.15.0","repository_url":"https://github.com/scrapy/scrapy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [apscheduler](https://github.com/agronholm/apscheduler), [newspaper4k](https://github.com/AndyTheFactory/newspaper4k), [opensearch-py](https://github.com/opensearch-project/opensearch-py), [pypdf](https://github.com/py-pdf/pypdf), [python-dotenv](https://github.com/theskumar/python-dotenv), [python-json-logger](https://github.com/nhairs/python-json-logger), [redis](https://github.com/redis/redis-py), [scrapy](https://github.com/scrapy/scrapy) and [spidermon](https://github.com/scrapinghub/spidermon) to permit the latest version.\nUpdates `apscheduler` from 3.11.0 to 3.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003escheduler.shutdown()\u003c/code\u003e not raising \u003ccode\u003eSchedulerNotRunning\u003c/code\u003e (or raising the wrong exception) for asynchronous schedulers when the scheduler is in fact not running\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCronTrigger\u003c/code\u003e sticking on a folded datetime during the fall-back DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003eagronholm/apscheduler#1021\u003c/a\u003e\u0026gt;_; PR by \u003ca href=\"https://github.com/berianjames\"\u003e\u003ccode\u003e@​berianjames\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/agronholm/apscheduler/commit/0f70950e320f3a7924dcd404c6c379143fb68b23\"\u003e\u003ccode\u003e0f70950\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/bc404e63af18bd8e493e0765f2ad0b51e6df0ef1\"\u003e\u003ccode\u003ebc404e6\u003c/code\u003e\u003c/a\u003e Updated publish actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c3aa155bd39fe54639d69b396f9ad720246f0c98\"\u003e\u003ccode\u003ec3aa155\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ad6b2dc766cd6722c8aa51543f988b9ee7b13110\"\u003e\u003ccode\u003ead6b2dc\u003c/code\u003e\u003c/a\u003e Added fix for get_next_fire_time not advancing through fold with unfolded pre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/f4df139771b7741f58f0eb456f091d3f659555c1\"\u003e\u003ccode\u003ef4df139\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/25be7b77afca892d152441d4a61402623af7f943\"\u003e\u003ccode\u003e25be7b7\u003c/code\u003e\u003c/a\u003e Fixed CronTrigger getting stuck on fallback DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1079\"\u003e#1079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/12613862e34456215dc98574f6cf594f77d66f47\"\u003e\u003ccode\u003e1261386\u003c/code\u003e\u003c/a\u003e Updated etcd image repository name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/b1f5636ccaf6a2fe86b208d7bd6b43024a1546b3\"\u003e\u003ccode\u003eb1f5636\u003c/code\u003e\u003c/a\u003e Fixed shutdown() not raising the correct exception for some schedulers\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.11.0...3.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `newspaper4k` from 0.9.3.1 to 0.9.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/blob/master/CHANGELOG.md\"\u003enewspaper4k's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e0.9.5 (2026-02-28)\u003c/h3\u003e\n\u003ch2\u003eUnreleased (2026-02-28)\u003c/h2\u003e\n\u003ch3\u003eNew feature:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003elang\u003c/strong\u003e: Add ISO 639-3 language code support for Kurdish (ckb, kmr) (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/691\"\u003e#691\u003c/a\u003e)(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/253dd550fd4c06d2bc8aebad6ee9fc6e33178ec7\"\u003e\u003ccode\u003e253dd55\u003c/code\u003e\u003c/a\u003e) (by Muzaffer Cikay)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests\u003c/strong\u003e: :sparkles: add robots tests(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/030e50d2f41f77e139030ad8374342ed1e36f398\"\u003e\u003ccode\u003e030e50d\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: added robots.txt check with hook in do_request(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/62dece9ece919c1947a06843c59fdd86d9a45ea9\"\u003e\u003ccode\u003e62dece9\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: add hooks to get_html(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/708cc10ff43c1d0dff48860673677aaa9f473d7d\"\u003e\u003ccode\u003e708cc10\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparse\u003c/strong\u003e: prioritize \u003ccode\u003edatePublished\u003c/code\u003e over \u003ccode\u003edateCreated\u003c/code\u003e in JSON-LD extraction(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/cdadb9ec48fe19e4f0c35478bdd4420c14d73084\"\u003e\u003ccode\u003ecdadb9e\u003c/code\u003e\u003c/a\u003e) (by Pontus Svensson)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Readme improvements(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/18ca21c888da17e94e3d4320e25e360ff24cb530\"\u003e\u003ccode\u003e18ca21c\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: add \u003ccode\u003enltk\u003c/code\u003e as an optional dependency for leaner deployments (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/e0734594ea64f3904fb374ab27de563b94565c0b\"\u003e\u003ccode\u003ee073459\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: added additional documentation for GoogleNews and Cloudscraper integration (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/aceb8535932938c7c44f7ce3f35c9deb87b4e0e6\"\u003e\u003ccode\u003eaceb853\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erework\u003c/strong\u003e: type annotations removed deprecated types (python 3.10+) (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/bd82a41225bdc9a883c0f9f2da1fec178cc8aa81\"\u003e\u003ccode\u003ebd82a41\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip null entries in JSON-LD arrays during extraction, fix \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/692\"\u003e#692\u003c/a\u003e(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/77d6cccf27dc94db47e1d83d944473e6a805c35d\"\u003e\u003ccode\u003e77d6ccc\u003c/code\u003e\u003c/a\u003e) (by ghxm)\u003c/li\u003e\n\u003cli\u003eArticleException f-string not interpolating status_code (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/684\"\u003e#684\u003c/a\u003e)(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/7caa2a5e7efb25d3e8c898540322a995ff1c6168\"\u003e\u003ccode\u003e7caa2a5\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003eadded alias to memorized_articles(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/fa9c5424d75e3c4f4001e7ac4bfd0a816b473a4b\"\u003e\u003ccode\u003efa9c542\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003eaccept relative paths for categories(\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/667\"\u003e#667\u003c/a\u003e) (by BRNMan)\u003c/li\u003e\n\u003cli\u003eimprove type annotations+isort(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/7744e172f2c6ef4f7fadd1a1c4675c730836da90\"\u003e\u003ccode\u003e7744e17\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003euse w3lib to detect webpage encoding(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/3bd4f006301aa8a83b723881db133564e61268ee\"\u003e\u003ccode\u003e3bd4f00\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003esource tests(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/9434dde41e3d23396c3e345443a58a56ae2101a3\"\u003e\u003ccode\u003e9434dde\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003esmall things(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/e02872efb0f82556d4a64c91d642b10eb4e915f2\"\u003e\u003ccode\u003ee02872e\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003efix google news handling of language setting (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/0ebaabfab31ad89a99eb8860bd580b61eff482aa\"\u003e\u003ccode\u003e0ebaabf\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebump gnews version and tests(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/26439c9dbb428b7dd8cf7ac22b5de9b53c73553a\"\u003e\u003ccode\u003e26439c9\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.9.4.1 (2025-11-18)\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: add support for python 3.14\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erework\u003c/strong\u003e: minor typing changes\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests\u003c/strong\u003e: increase test coverage\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elang\u003c/strong\u003e: add Kurdish Kurmanji stopwords (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/677\"\u003e#677\u003c/a\u003e) (by cikay)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: update supported languages (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/676\"\u003e#676\u003c/a\u003e) (by cikay)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: bump sphinx version (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/680\"\u003e#680\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Docs 0.9.4 (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/681\"\u003e#681\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.9.4 (2025-11-15)\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cp\u003eBumped min Python version to 3.10. Version 3.8 and 3.9 are no longer supported, but might still work.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003emisc\u003c/strong\u003e: switch to uv from poetry(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/234507640e3594e5895cc541b26f194f1076aa87\"\u003e\u003ccode\u003e2345076\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparse\u003c/strong\u003e: add brotli compression(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/6ff72bdf60c736b5d59e2f254dda053fd9f7599b\"\u003e\u003ccode\u003e6ff72bd\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einstall\u003c/strong\u003e: dependency versions pin(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/10cae21ebf3e9a261ac8e6012aed0882880972f6\"\u003e\u003ccode\u003e10cae21\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping\u003c/strong\u003e: update type hint for data parameter to allow None(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/80279d16849d211625d7d22b86bc2d01110346b9\"\u003e\u003ccode\u003e80279d1\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/9fdb4cedde14f336fc4599dc419cbf9a06d10d25\"\u003e\u003ccode\u003e9fdb4ce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/708\"\u003e#708\u003c/a\u003e from AndyTheFactory/pre-0.9.5-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/3fc6f5d849d3e7b5f2fe91f46f917f27420eb942\"\u003e\u003ccode\u003e3fc6f5d\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/e7d24de5b07bb6bfd071ab3fa85023e9ffb3c003\"\u003e\u003ccode\u003ee7d24de\u003c/code\u003e\u003c/a\u003e feat: bump version to 0.9.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/2bf6fc5322c111abf8c79dfdbb790043f1fc117b\"\u003e\u003ccode\u003e2bf6fc5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/707\"\u003e#707\u003c/a\u003e from AndyTheFactory/pre-0.9.5-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/8ec447d7de504fa18e4ab9dd9a6b500308f25e6a\"\u003e\u003ccode\u003e8ec447d\u003c/code\u003e\u003c/a\u003e feat: bump version to 0.9.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/93e4814338cdfba71d33f092c54d9d29995dc629\"\u003e\u003ccode\u003e93e4814\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/706\"\u003e#706\u003c/a\u003e from AndyTheFactory/pre-0.9.5-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/eab2b6154ea8658bd313c828c7bf6b6e17bf73aa\"\u003e\u003ccode\u003eeab2b61\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/a2e3f97b9d12d3294b44b856d54f627bdcb58947\"\u003e\u003ccode\u003ea2e3f97\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/5216b2435715f5a15e898392688313977955baa8\"\u003e\u003ccode\u003e5216b24\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/77260b727dabdbe8032341f7ca48d38f1da70537\"\u003e\u003ccode\u003e77260b7\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/compare/0.9.3.1...0.9.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.7.1 to 6.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e) by \u003ca href=\"https://github.com/Ygnas\"\u003e\u003ccode\u003e@​Ygnas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e) by \u003ca href=\"https://github.com/j-t-1\"\u003e\u003ccode\u003e@​j-t-1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e) by \u003ca href=\"https://github.com/rassie\"\u003e\u003ccode\u003e@​rassie\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e) by \u003ca href=\"https://github.com/astahlman\"\u003e\u003ccode\u003e@​astahlman\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e) by \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve UnboundLocalError for xobjs in _get_image (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3684\"\u003e#3684\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.1...6.9.2\"\u003eFull Changelog\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/py-pdf/pypdf/commit/c476b4f293c8ef4cac07dfb755e5582d838fcdc0\"\u003e\u003ccode\u003ec476b4f\u003c/code\u003e\u003c/a\u003e REL: 6.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c50a0104cf083356f7c7f5d61410466a57f5c88a\"\u003e\u003ccode\u003ec50a010\u003c/code\u003e\u003c/a\u003e SEC: Do not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ac734dab4eef92bcce50d503949b4d9887d89f11\"\u003e\u003ccode\u003eac734da\u003c/code\u003e\u003c/a\u003e SEC: Introduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/b49e7eb45422c19b68ac59c51b7699409e74d44e\"\u003e\u003ccode\u003eb49e7eb\u003c/code\u003e\u003c/a\u003e REL: 6.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/62338e9d36419cf193ccec7331784f45df1d70b3\"\u003e\u003ccode\u003e62338e9\u003c/code\u003e\u003c/a\u003e SEC: Limit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/5dcc0aebaa2c732028ea8def2eb9982e324b7c11\"\u003e\u003ccode\u003e5dcc0ae\u003c/code\u003e\u003c/a\u003e DEV: Update pytest-benchmark to 5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/b42e4aa98ae5c7fdd02558d165d39fe639fdf97d\"\u003e\u003ccode\u003eb42e4aa\u003c/code\u003e\u003c/a\u003e DEV: Update pinned pillow and pytest where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/717446b1218a3eb236cb47d1bae2b68451ccb6c0\"\u003e\u003ccode\u003e717446b\u003c/code\u003e\u003c/a\u003e ROB: Consider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9e461d361b9004da68fc8e6acc4308cce68aa304\"\u003e\u003ccode\u003e9e461d3\u003c/code\u003e\u003c/a\u003e DEV: Bump softprops/action-gh-release from 2 to 3 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3730\"\u003e#3730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/500d09d92fa80a6f1fcdfa46656893efd05e91ff\"\u003e\u003ccode\u003e500d09d\u003c/code\u003e\u003c/a\u003e TST: Update \u003ccode\u003etest_embedded_file__basic\u003c/code\u003e to use \u003ccode\u003etmp_path\u003c/code\u003e fixture (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3726\"\u003e#3726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.7.1...6.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.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\u003c/blockquote\u003e\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.1.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 `python-json-logger` from 3.3.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0.rc1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0.rc1\"\u003e4.0.0.rc1\u003c/a\u003e - 2025-09-07\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` 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/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow newer PyJWT versions for branch 5.3 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3682\"\u003e#3682\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/bcmills\"\u003e\u003ccode\u003e@​bcmills\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/8f297c2c853b69a63fb1c0ede5a0c507636a5068\"\u003e\u003ccode\u003e8f297c2\u003c/code\u003e\u003c/a\u003e Updating library version for 5.3.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cf81e16f585d1c036ddbbb53ba2063327cfd2a6c\"\u003e\u003ccode\u003ecf81e16\u003c/code\u003e\u003c/a\u003e Allow newer PyJWT versions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3682\"\u003e#3682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/653d9ef00fc687e72c0bb065d2c61c664b13b63b\"\u003e\u003ccode\u003e653d9ef\u003c/code\u003e\u003c/a\u003e flake8-isort version is set to 6.1.1 - to be compatible with python 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46740c88e1f95a33d900844737bee4e7df5432dd\"\u003e\u003ccode\u003e46740c8\u003c/code\u003e\u003c/a\u003e Replacing the redis and redis-stack-server images with redis-libs-tests image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/1c0a6f21250f44326dff217b960169b9d1fd0e71\"\u003e\u003ccode\u003e1c0a6f2\u003c/code\u003e\u003c/a\u003e Fix flake version to the last known working with our code. Since flake is no ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/a33663958d42e698069962e260260c80fd093162\"\u003e\u003ccode\u003ea336639\u003c/code\u003e\u003c/a\u003e Fixing linter errors - dues to backporting from master where formatter is upd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b928f971b4936eb6dfca5a32c3085a419a3a50a6\"\u003e\u003ccode\u003eb928f97\u003c/code\u003e\u003c/a\u003e Remove decreasing of created connections count when releasing not owned by co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/35ca1025f2961eeb498335f8066d6596c87421c3\"\u003e\u003ccode\u003e35ca102\u003c/code\u003e\u003c/a\u003e Fixing the versions of some deprecations that wrongly added as 5.0.3 - the co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/53dba14ac9f68db0b5ce34076bb1f8b9e2c6fcbe\"\u003e\u003ccode\u003e53dba14\u003c/code\u003e\u003c/a\u003e Exponential with jitter backoff (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3550\"\u003e#3550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/eb91d4fa6659f2fe67b2232da9dc800b7b4f21ad\"\u003e\u003ccode\u003eeb91d4f\u003c/code\u003e\u003c/a\u003e Adding load balancing strategy configuration to cluster clients(replacement f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v5.2.1...v5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scrapy` from 2.14.1 to 2.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/scrapy/releases\"\u003escrapy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental support for running without a Twisted reactor\u003c/li\u003e\n\u003cli\u003eExperimental \u003ccode\u003ehttpx\u003c/code\u003e-based download handler\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.scrapy.org/en/latest/news.html#scrapy-2-15-0-2026-04-09\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.14.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eValues from the \u003ccode\u003eReferrer-Policy\u003c/code\u003e header of HTTP responses are no longer executed as Python callables. See the \u003ca href=\"https://github.com/scrapy/scrapy/security/advisories/GHSA-cwxj-rr6w-m6w7\"\u003ecwxj-rr6w-m6w7\u003c/a\u003e security advisory for details.\u003c/li\u003e\n\u003cli\u003eIn line with the \u003ca href=\"https://fetch.spec.whatwg.org/#http-redirect-fetch\"\u003estandard\u003c/a\u003e, 301 redirects of POST requests are converted into GET requests.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.scrapy.org/en/latest/news.html#scrapy-2-14-2-2026-03-12\"\u003eFull Changelog\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/scrapy/scrapy/blob/master/docs/news.rst\"\u003escrapy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScrapy 2.15.0 (2026-04-09)\u003c/h2\u003e\n\u003cp\u003eHighlights:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eExperimental support for running without a Twisted reactor\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExperimental \u003ccode\u003ehttpx\u003c/code\u003e-based download handler\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackward-incompatible changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n-   The built-in HTTP :ref:`download handlers \u0026lt;download-handlers-ref\u0026gt;` now\n    raise Scrapy-specific exceptions instead of implementation-specific ones,\n    see :ref:`download-handlers-exceptions`. This can affect user code that\n    handles downloader exceptions, such as ``process_exception()`` methods of\n    custom :ref:`downloader middlewares \u0026lt;topics-downloader-middleware-custom\u0026gt;`.\n    (:issue:`7208`)\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn order to fix a long-standing bug with handling of asynchronous storages,\u003cbr /\u003e\nthe following changes were made to media pipeline classes, which can impact\u003cbr /\u003e\nsome of the user code that subclasses them or calls their methods directly:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eoverrides of :meth:\u003ccode\u003escrapy.pipelines.media.MediaPipeline.media_downloaded\u003c/code\u003e\u003cbr /\u003e\nand :meth:\u003ccode\u003e~sc...\n\n_Description has been truncated_","html_url":"https://github.com/GSA-TTS/searchgov-spider/pull/433","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GSA-TTS%2Fsearchgov-spider/issues/433","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/433/packages"},{"uuid":"3918736506","node_id":"PR_kwDOHUSeqs7CmuGz","number":437,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-10T00:00:02.000Z","updated_at":"2026-02-10T00:05:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":21,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.9.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-httpserver","old_version":"1.1.3","new_version":"1.1.4","repository_url":"https://github.com/csernazs/pytest-httpserver"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.4"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.0","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.9.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-httpserver](https://github.com/csernazs/pytest-httpserver) | `1.1.3` | `1.1.4` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.4` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.0` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.9.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082\"\u003e08bc7082\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29b\"\u003e0e5ec29b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649f\"\u003e1917649f\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa5\"\u003e2bc15fa5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a\"\u003e5ac2808a\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc5\"\u003e74c9ecc5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469\"\u003e7b319469\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe\"\u003e8e21a7fe\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b\"\u003ec8dd7a0b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486b\"\u003ecdb2486b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3\"\u003edbd162b3\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b8\"\u003edbe9d8b8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\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\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396\"\u003e2ef63396\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1\"\u003e5d9fafe1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd\"\u003e721ea2dd\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e0e5ec29bc6a31b77bcfba4254cef5bffb199095c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003ec8dd7a0b124c395b7b60189ee78f47aba8d51f7d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e08bc7082db7392f13bc8c51511b4afa9c7b157c9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e74c9ecc54173420bfcd48498a8956088a035af50\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e7b319469d2e495ea0bf7367f3949190e8f5d9fff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e8e21a7fe54d0a043f31937671003630a1985a5d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a69195c688ed42c3604d4bfadbb602a66\"\u003e5ac2808a69195c688ed42c3604d4bfadbb602a66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3583e32e6f705a51f5c3fef333a9b89d0\"\u003edbd162b3583e32e6f705a51f5c3fef333a9b89d0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa570683ba584230c51b439d189dbdcd580\"\u003e2bc15fa570683ba584230c51b439d189dbdcd580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b89d975dfbed8c830a5687ccfafea51d5f\"\u003edbe9d8b89d975dfbed8c830a5687ccfafea51d5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649fac41481da1adea6c2a9f4ab1298a34c4\"\u003e1917649fac41481da1adea6c2a9f4ab1298a34c4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486bb051dcbfbffc2510aff6aacede5e54d3\"\u003ecdb2486bb051dcbfbffc2510aff6aacede5e54d3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1727\"\u003e#1727\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003ee730bf50c4584f737ab86b2e409ddb27b40d2cec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\"\u003e721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1466b5ccb1db4a814967a5cc8465148a2\"\u003e5d9fafe1466b5ccb1db4a814967a5cc8465148a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting in setup.py dependencies list (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1713\"\u003e#1713\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cc4831d7e253b265b0b96e08b5479f4c759be442\"\u003ecc4831d7e253b265b0b96e08b5479f4c759be442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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/googleapis/python-storage/commit/77c1edaa6de4058e545ad1b68bde5507b75b8e37\"\u003e\u003ccode\u003e77c1eda\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260202T123858Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1736\"\u003e#1736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e\u003ccode\u003e0e5ec29\u003c/code\u003e\u003c/a\u003e feat: add get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7a00dfb73696d6db98747509e9f2f2bd0c94c53a\"\u003e\u003ccode\u003e7a00dfb\u003c/code\u003e\u003c/a\u003e chore: Add README for running zonal buckets samples (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e\u003ccode\u003e2ef6339\u003c/code\u003e\u003c/a\u003e fix: receive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003e\u003ccode\u003ec8dd7a0\u003c/code\u003e\u003c/a\u003e feat: expose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e\u003ccode\u003e08bc708\u003c/code\u003e\u003c/a\u003e feat: update generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e\u003ccode\u003e74c9ecc\u003c/code\u003e\u003c/a\u003e feat: Move Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e\u003ccode\u003e7b31946\u003c/code\u003e\u003c/a\u003e feat: add default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003e\u003ccode\u003ee730bf5\u003c/code\u003e\u003c/a\u003e fix!: Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to Async...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e\u003ccode\u003e8e21a7f\u003c/code\u003e\u003c/a\u003e feat: expose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (e...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/437","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/437","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/437/packages"},{"uuid":"3918324195","node_id":"PR_kwDOKzAd5M7ClV98","number":58,"state":"open","title":"deps(deps): bump opensearch-py from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-09T21:52:43.000Z","updated_at":"2026-02-09T21:52:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/MysterionRise/adaptive-knowledge-graph/pull/58","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MysterionRise%2Fadaptive-knowledge-graph/issues/58","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/58/packages"},{"uuid":"3857982199","node_id":"PR_kwDOHUSeqs6_eFIV","number":436,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-26T22:40:03.000Z","updated_at":"2026-01-26T22:50:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":20,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.8.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.2"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.8.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.2` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.8.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961be\"\u003e0e2961be\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement \u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e;append_from_file\u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956\"\u003e1333c956\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb\"\u003e139390cb\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5\"\u003e89bfe7a5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec\"\u003ea57ea0ec\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee0\"\u003ed90f0ee0\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf\"\u003ef7095faf\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\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b\"\u003e4a609a4b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711da\"\u003e6dc711da\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebucket:\u003c/strong\u003e Move blob fails when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\"\u003e6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16846a69f3a911844971241899f60cce14\"\u003e2d5a7b16846a69f3a911844971241899f60cce14\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b3f4ba1396825911cb02f8a9649135cd5\"\u003e4a609a4b3f4ba1396825911cb02f8a9649135cd5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/googleapis/python-storage/blob/57405e956a7ca579b20582bf6435cec42743c478/google/cloud/storage/bucket.py#L2256\"\u003emove_blob\u003c/a\u003e failure when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for partial list buckets (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1606\"\u003e#1606\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/92fc2b00429415b9fbe7cba0167778eee60449e2\"\u003e92fc2b0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake return_partial_success and unreachable fields public for list Bucket (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/323cddd5d439e04e12614106eab1928fd4008c0b\"\u003e323cddd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1612\"\u003e#1612\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDont pass credentials to StorageClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/195d644c4d4feec98e9a9cd9fad67fc774c50dc8\"\u003e195d644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.4.1...v3.5.0\"\u003e3.5.0\u003c/a\u003e (2025-11-05)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/16cf512c2e05a6eb0e4ba7280814886e35b2942b\"\u003e\u003ccode\u003e16cf512\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260113T144551Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/94ad8952cecfbfaf0e7917fbf4a362f4996f0c78\"\u003e\u003ccode\u003e94ad895\u003c/code\u003e\u003c/a\u003e chore(librarian): bump library version to 3.7.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e\u003ccode\u003e89bfe7a\u003c/code\u003e\u003c/a\u003e feat(experimental): flush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003e\u003ccode\u003ea57ea0e\u003c/code\u003e\u003c/a\u003e feat(experimental): add write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0c35d3f3dd767831259a188156140b18f7ff9927\"\u003e\u003ccode\u003e0c35d3f\u003c/code\u003e\u003c/a\u003e chore(tests): add test for reading unfinalized appendable objects with genera...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003e\u003ccode\u003ed90f0ee\u003c/code\u003e\u003c/a\u003e feat(experimental): add bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a994dbf9c4d6f432a5eff9da08ec88840d47c159\"\u003e\u003ccode\u003ea994dbf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;skip notification tests until b/470069573 is fixed\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1694\"\u003e#1694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dfc60b3e0167790a8ade61b1b2143f297514bdd1\"\u003e\u003ccode\u003edfc60b3\u003c/code\u003e\u003c/a\u003e chore: delete topic after creation (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1687\"\u003e#1687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e\u003ccode\u003e1333c95\u003c/code\u003e\u003c/a\u003e feat: implement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fe6d7c930bf4e83187120eda52aeaab932502e9f\"\u003e\u003ccode\u003efe6d7c9\u003c/code\u003e\u003c/a\u003e chore: optimization to reduce number of open TCP connections while running zo...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (entity.presentDetails) (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1793\"\u003e#1793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/4277ed87a0572cad92894b0b8b2b5104efe2d3f6\"\u003e\u003ccode\u003e4277ed8\u003c/code\u003e\u003c/a\u003e feat: Add work objects support (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1783\"\u003e#1783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/998ee043209ec90adaa29f12c16210f218bfbb61\"\u003e\u003ccode\u003e998ee04\u003c/code\u003e\u003c/a\u003e fix: improve the release instructions (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1792\"\u003e#1792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/21ac4f79e8e8ab6fb868682fc3814522ea37ab6a\"\u003e\u003ccode\u003e21ac4f7\u003c/code\u003e\u003c/a\u003e chore: Add .github/CODEOWNERS file (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/ae366555d6d430befd11dd2f0bf76707879635aa\"\u003e\u003ccode\u003eae36655\u003c/code\u003e\u003c/a\u003e chore(release): version 3.38.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/66b45239097983b8a0b5b82a02e694ba8f90a06e\"\u003e\u003ccode\u003e66b4523\u003c/code\u003e\u003c/a\u003e docs: link to context actions block and related reference (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1789\"\u003e#1789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9e089031db3041e1f4c7611aa023923ae586d5fa\"\u003e\u003ccode\u003e9e08903\u003c/code\u003e\u003c/a\u003e ci: upload test results using the recommended codecov action (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1787\"\u003e#1787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.5.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where pie trace \u003ccode\u003elegend\u003c/code\u003e, \u003ccode\u003eshowlegend\u003c/code\u003e attributes don't accept array values [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5464\"\u003e#5464\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5465\"\u003e#5465\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/my-tien\"\u003e\u003ccode\u003e@​my-tien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Plotly Express ignored trace-specific color sequences defined in templates via \u003ccode\u003etemplate.data.\u0026lt;trace_type\u0026gt;\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5437\"\u003e#5437\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/antonymilne\"\u003e\u003ccode\u003e@​antonymilne\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003evalidate_gantt\u003c/code\u003e function [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5386\"\u003e#5386\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/misrasaurabh1\"\u003e\u003ccode\u003e@​misrasaurabh1\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.0 to version 3.3.1. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.1\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5456\"\u003e#5456\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for arrays for the pie properties \u003ccode\u003eshowlegend\u003c/code\u003e and \u003ccode\u003elegend\u003c/code\u003e, so that these can be configured per slice. [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7580\"\u003e#7580\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.4.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable chan...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/436","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/436","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/436/packages"},{"uuid":"3856961533","node_id":"PR_kwDOQ95aMc6_ar1Z","number":9,"state":"closed","title":"chore(deps): bump opensearch-py from 2.5.0 to 3.1.0 in /backend","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-01-26T19:32:17.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T17:42:51.000Z","updated_at":"2026-01-26T19:32:27.000Z","time_to_close":6566,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"opensearch-py","old_version":"2.5.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 2.5.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.5.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=2.5.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/TerrifiedBug/chad/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerrifiedBug%2Fchad/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"},{"uuid":"3709927898","node_id":"PR_kwDOL7kQEs633gT-","number":602,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-10T18:09:25.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-09T09:09:41.000Z","updated_at":"2025-12-10T18:09:28.000Z","time_to_close":118784,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":24,"packages":[{"name":"fastapi","old_version":"0.111.1","new_version":"0.124.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"locust","old_version":"2.25.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"mangum","old_version":"0.17.0","new_version":"0.19.0","repository_url":"https://github.com/Kludex/mangum"},{"name":"pre-commit","old_version":"3.5.0","new_version":"4.5.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pydantic","old_version":"2.11.9","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"pytest-asyncio","old_version":"0.25","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"uvicorn","old_version":"0.22.0","new_version":"0.38.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"boto3","old_version":"1.35.95","new_version":"1.42.5","repository_url":"https://github.com/boto/boto3"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"pypdf","old_version":"6.0.0","new_version":"6.4.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"langchain-community","old_version":"0.3.27","new_version":"0.4.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"0.3.76","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"0.3.33","new_version":"1.1.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-text-splitters","old_version":"0.3.11","new_version":"1.0.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"pytest","old_version":"8.3.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"moto","old_version":"5.0.3","new_version":"5.1.18"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"black","old_version":"24.3.0","new_version":"25.12.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":"mypy","old_version":"1.9.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"pydantic-core","old_version":"2.33.2","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 24 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.1` | `0.124.0` |\n| [locust](https://github.com/locustio/locust) | `2.25.0` | `2.42.6` |\n| [mangum](https://github.com/Kludex/mangum) | `0.17.0` | `0.19.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `3.5.0` | `4.5.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.9` | `2.12.5` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.25` | `1.3.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.22.0` | `0.38.0` |\n| [boto3](https://github.com/boto/boto3) | `1.35.95` | `1.42.5` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.0.0` | `6.4.1` |\n| [langchain-community](https://github.com/langchain-ai/langchain) | `0.3.27` | `0.4.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.76` | `1.1.2` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `0.3.33` | `1.1.1` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `0.3.11` | `1.0.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.2` | `9.0.2` |\n| [moto[all]](https://github.com/getmoto/moto) | `5.0.3` | `5.1.18` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [black](https://github.com/psf/black) | `24.3.0` | `25.12.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [mypy](https://github.com/python/mypy) | `1.9.0` | `1.19.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.5` |\n\n\nUpdates `fastapi` from 0.111.1 to 0.124.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.124.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸  Improve tracebacks by adding endpoint metadata. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14306\"\u003e#14306\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\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 typo in \u003ccode\u003escripts/mkdocs_hooks.py\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14457\"\u003e#14457\u003c/a\u003e by \u003ca href=\"https://github.com/yujiteshima\"\u003e\u003ccode\u003e@​yujiteshima\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.123.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix using class (not instance) dependency that has \u003ccode\u003e__call__\u003c/code\u003e method. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14458\"\u003e#14458\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🐛 Fix \u003ccode\u003eseparate_input_output_schemas=False\u003c/code\u003e with \u003ccode\u003ecomputed_field\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14453\"\u003e#14453\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.123.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix OAuth2 scopes in OpenAPI in extra corner cases, parent dependency with scopes, sub-dependency security scheme without scopes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14459\"\u003e#14459\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.123.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix OpenAPI security scheme OAuth2 scopes declaration, deduplicate security schemes with different scopes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14455\"\u003e#14455\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.123.7\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix evaluating stringified annotations in Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11355\"\u003e#11355\u003c/a\u003e by \u003ca href=\"https://github.com/chaen\"\u003e\u003ccode\u003e@​chaen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.123.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for functools wraps and partial combined, for async and regular functions and classes in path operations and dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14448\"\u003e#14448\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.123.5\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Allow using dependables with \u003ccode\u003efunctools.partial()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9753\"\u003e#9753\u003c/a\u003e by \u003ca href=\"https://github.com/lieryan\"\u003e\u003ccode\u003e@​lieryan\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add support for wrapped functions (e.g. \u003ccode\u003e@functools.wraps()\u003c/code\u003e) used with forward references. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/5077\"\u003e#5077\u003c/a\u003e by \u003ca href=\"https://github.com/lucaswiman\"\u003e\u003ccode\u003e@​lucaswiman\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Handle wrapped dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9555\"\u003e#9555\u003c/a\u003e by \u003ca href=\"https://github.com/phy1729\"\u003e\u003ccode\u003e@​phy1729\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix optional sequence handling with new union syntax from Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14430\"\u003e#14430\u003c/a\u003e 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\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove dangling extra condiitonal no longer needed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14435\"\u003e#14435\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Refactor internals, update \u003ccode\u003eis_coroutine\u003c/code\u003e check to reuse internal supported variants (unwrap, check class). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14434\"\u003e#14434\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/b5ca13249e3f2002c70c3f2de528a128af2008f7\"\u003e\u003ccode\u003eb5ca132\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.124.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a2cef707e30fb6eb14812e4e273e34079d30ae6b\"\u003e\u003ccode\u003ea2cef70\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5b6245666b8a499d2551caff7567056ef7f881b2\"\u003e\u003ccode\u003e5b62456\u003c/code\u003e\u003c/a\u003e ✏️ Fix typo in \u003ccode\u003escripts/mkdocs_hooks.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14457\"\u003e#14457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dbd34f15789f4afa851e339cea4fcd49f421039d\"\u003e\u003ccode\u003edbd34f1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e1117f75505bbdb2d42321a009dbf26c9c2b8b6d\"\u003e\u003ccode\u003ee1117f7\u003c/code\u003e\u003c/a\u003e 🚸  Improve tracebacks by adding endpoint metadata (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14306\"\u003e#14306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/08b09e5236e315b6f10265ed229f130d4befb4ea\"\u003e\u003ccode\u003e08b09e5\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.123.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e7d7038dfa35fc923f20fd11a969d2e65e1b9df1\"\u003e\u003ccode\u003ee7d7038\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/da0ffab0b260475499294d3dc767409d7bca5c34\"\u003e\u003ccode\u003eda0ffab\u003c/code\u003e\u003c/a\u003e 🐛 Fix using class (not instance) dependency that has \u003ccode\u003e__call__\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14458\"\u003e#14458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/516169428d2fa189d34318ebc469a082c49c1189\"\u003e\u003ccode\u003e5161694\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/812a1926f06391b22b081fdb11fe7528e3b91293\"\u003e\u003ccode\u003e812a192\u003c/code\u003e\u003c/a\u003e 🐛 Fix \u003ccode\u003eseparate_input_output_schemas=False\u003c/code\u003e with \u003ccode\u003ecomputed_field\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14453\"\u003e#14453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.111.1...0.124.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `locust` from 2.25.0 to 2.42.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/locustio/locust/releases\"\u003elocust's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.42.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGH Actions: Bump actions/checkout from 5 to 6 in the all_dependencies 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/locustio/locust/pull/3287\"\u003elocustio/locust#3287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Toml Parser Being Called on Conf Files by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3293\"\u003elocustio/locust#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly log \u0026quot;OpenTelemetry enabled\u0026quot; message when success by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3294\"\u003elocustio/locust#3294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd otel unit tests by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3295\"\u003elocustio/locust#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLog duplicate client_ready messages as debug instead of info level by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3296\"\u003elocustio/locust#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove tests by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3297\"\u003elocustio/locust#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OTel documentation by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3298\"\u003elocustio/locust#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate OTel setup by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3300\"\u003elocustio/locust#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse match-case instead of gigantic if-elif statement when handling zmq messages in master-worker communication by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3299\"\u003elocustio/locust#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor case statements and update to use 3.10 set syntax by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3301\"\u003elocustio/locust#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't import pytest unless it is really needed, to speed up startup by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3302\"\u003elocustio/locust#3302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.42.5...2.42.6\"\u003ehttps://github.com/locustio/locust/compare/2.42.5...2.42.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.42.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLog when otel is enabled by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3284\"\u003elocustio/locust#3284\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.42.4...2.42.5\"\u003ehttps://github.com/locustio/locust/compare/2.42.4...2.42.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.42.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnables FURB ruff lint by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3265\"\u003elocustio/locust#3265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdates pytest dependency range by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3263\"\u003elocustio/locust#3263\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow multiple dropdown in Web UI by \u003ca href=\"https://github.com/jFompe\"\u003e\u003ccode\u003e@​jFompe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3261\"\u003elocustio/locust#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncludes npm and uv on dependabot file by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3269\"\u003elocustio/locust#3269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenTelemetry support by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3275\"\u003elocustio/locust#3275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd otlp http exporter dependency by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3276\"\u003elocustio/locust#3276\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable uv.lock check in GH action by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3277\"\u003elocustio/locust#3277\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenTelemetry flag by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3278\"\u003elocustio/locust#3278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVerbose request span name by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3279\"\u003elocustio/locust#3279\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the eslint group in /locust/webui with 11 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/locustio/locust/pull/3270\"\u003elocustio/locust#3270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eForward explicitly set request name to OTEL span by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3281\"\u003elocustio/locust#3281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid duplicated action run on pull requests by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3282\"\u003elocustio/locust#3282\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/jFompe\"\u003e\u003ccode\u003e@​jFompe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3261\"\u003elocustio/locust#3261\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.42.3...2.42.4\"\u003ehttps://github.com/locustio/locust/compare/2.42.3...2.42.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.42.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix single line .conf files incorrectly being treated as toml by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3257\"\u003elocustio/locust#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGH Actions: update uv version, ensure uv.lock doesn't contain anything not in pyproject.toml by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3259\"\u003elocustio/locust#3259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreates dependabot file to keep gh actions updated by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3264\"\u003elocustio/locust#3264\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all_dependencies group with 7 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/locustio/locust/pull/3266\"\u003elocustio/locust#3266\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/locustio/locust/blob/master/docs/changelog.rst\"\u003elocust's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.42.6\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eGH Actions: Bump actions/checkout from 5 to 6 \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3287\"\u003elocustio/locust#3287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Toml Parser Being Called on .conf Files \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3293\"\u003elocustio/locust#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLog duplicate client_ready messages as debug instead of info level \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3296\"\u003elocustio/locust#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVarious minor code modernization \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3299\"\u003elocustio/locust#3299\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3301\"\u003elocustio/locust#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't import pytest unless it is really needed, to speed up startup \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3296\"\u003elocustio/locust#3296\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.5\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eLog when otel is enabled \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3284\"\u003elocustio/locust#3284\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.4\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate pytest dependency range \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3263\"\u003elocustio/locust#3263\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow multiple dropdown in Web UI \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3261\"\u003elocustio/locust#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenTelemetry support \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3275\"\u003elocustio/locust#3275\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3276\"\u003elocustio/locust#3276\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3278\"\u003elocustio/locust#3278\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3279\"\u003elocustio/locust#3279\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.3\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix single line .conf files incorrectly being treated as toml \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3257\"\u003elocustio/locust#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate various GitHub actions used in the build \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3266\"\u003elocustio/locust#3266\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3259\"\u003elocustio/locust#3259\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove setuptools from dependencies \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3253\"\u003elocustio/locust#3253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix an issue with .conf-files \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3256\"\u003elocustio/locust#3256\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd VS Code Extension and k8s Operator to documentation \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3251\"\u003elocustio/locust#3251\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce DNSUser \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3243\"\u003elocustio/locust#3243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDependencies: allow gevent \u0026gt;25.8.1, avoid python-requests \u0026gt;2.32.5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.41.6\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3235\"\u003elocustio/locust#3235\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.41.5\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix FastHttpUser handling of 308 response code\u003c/li\u003e\n\u003cli\u003eFix Unsafe Template Arg \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3232\"\u003elocustio/locust#3232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.41.4\u003c/h1\u003e\n\u003cp\u003e(skipped because of failed publishing)\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/locustio/locust/commit/3d7ff7b2930d1fc0c70ce4aa67ab640bc1d533df\"\u003e\u003ccode\u003e3d7ff7b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3302\"\u003e#3302\u003c/a\u003e from locustio/only-import-pytest-when-needed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/5f4d9bbf3030730f7d2cf8a4c42060918ba6bd32\"\u003e\u003ccode\u003e5f4d9bb\u003c/code\u003e\u003c/a\u003e Dont import pytest unless it is really needed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/49c65097300cf4aec943f36cb722d91617a8adbb\"\u003e\u003ccode\u003e49c6509\u003c/code\u003e\u003c/a\u003e Use f-string when printing error occurrences in error report\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/dc1e9a9ca7c77b0eb62e6a1741682a569988985b\"\u003e\u003ccode\u003edc1e9a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3301\"\u003e#3301\u003c/a\u003e from locustio/simplify-custom-messages-match-case-st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/d552bf49243e89bdbdc03a259b486f0adb75ebf3\"\u003e\u003ccode\u003ed552bf4\u003c/code\u003e\u003c/a\u003e Use match-case instead of if-elif when iterating over form items\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/03f0304b13a622adb52ab75efe47912b2c6bca7b\"\u003e\u003ccode\u003e03f0304\u003c/code\u003e\u003c/a\u003e use 3.10 set syntax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/295383193912e5e5af94ca478af9a6a3f7ba99e1\"\u003e\u003ccode\u003e2953831\u003c/code\u003e\u003c/a\u003e improve runners test case\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/2492928fb64199b243efe8af05bdaa46cf097f33\"\u003e\u003ccode\u003e2492928\u003c/code\u003e\u003c/a\u003e Simplify custom messages case statement in runners.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/dbdf85e013766a095e3a8eda1252fd3ac8ead990\"\u003e\u003ccode\u003edbdf85e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3299\"\u003e#3299\u003c/a\u003e from locustio/use-match-case-instead-of-elif-for-zmq...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/1ff72bd86eac29f9a2101c8498295774fe5210a0\"\u003e\u003ccode\u003e1ff72bd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3300\"\u003e#3300\u003c/a\u003e from amadeuppereira/update-otel\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/locustio/locust/compare/2.25.0...2.42.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mangum` from 0.17.0 to 0.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/mangum/releases\"\u003emangum's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for lifespan state 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/mangum/pull/337\"\u003eKludex/mangum#337\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/mangum/compare/0.18.0...0.19.0\"\u003ehttps://github.com/Kludex/mangum/compare/0.18.0...0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0\u003c/h2\u003e\n\u003cp\u003eMangum officially supports Python 3.13! 🎉\u003c/p\u003e\n\u003cp\u003eNothing changes from 0.18.0a1.\u003c/p\u003e\n\u003ch2\u003e0.18.0a1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix a broken link to asgi-frameworks limitations by \u003ca href=\"https://github.com/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate project 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/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc: remove expired domain from README by \u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proper publish workflow 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/mangum/pull/328\"\u003eKludex/mangum#328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove codecov 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/mangum/pull/329\"\u003eKludex/mangum#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePublish documentation on tag push 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/mangum/pull/330\"\u003eKludex/mangum#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate documentation 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/mangum/pull/331\"\u003eKludex/mangum#331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 0.18.0a1 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/mangum/pull/332\"\u003eKludex/mangum#332\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/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\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/mangum/compare/0.17.0...0.18.0a1\"\u003ehttps://github.com/Kludex/mangum/compare/0.17.0...0.18.0a1\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/mangum/blob/main/CHANGELOG.md\"\u003emangum's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.19.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://asgi.readthedocs.io/en/latest/specs/lifespan.html#lifespan-state\"\u003eLifespan State\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.18.0\u003c/h1\u003e\n\u003cp\u003eNo changes were made compared to 0.18.0a1.\u003c/p\u003e\n\u003ch1\u003e0.18.0a1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\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/mangum/commit/4152a4eb8d325e382f41e4b04628671565f12a2d\"\u003e\u003ccode\u003e4152a4e\u003c/code\u003e\u003c/a\u003e Version 0.19.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/631b930e72a43d7872ca177b84fa3cfca8714a99\"\u003e\u003ccode\u003e631b930\u003c/code\u003e\u003c/a\u003e Add support for lifespan state (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/5a7121d56b2a7868e3331a1c4bc278711693a142\"\u003e\u003ccode\u003e5a7121d\u003c/code\u003e\u003c/a\u003e Update linting and type checker setup (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b7e18ede3eadb38cc5d536d4c46a0a5ffa160270\"\u003e\u003ccode\u003eb7e18ed\u003c/code\u003e\u003c/a\u003e Remove FUNDING.yml (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/c8246c556e068590d91b98d6516e7f87a5703640\"\u003e\u003ccode\u003ec8246c5\u003c/code\u003e\u003c/a\u003e Create CNAME (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b749f9530e12ee90461628eaeadbc644fa89dd3e\"\u003e\u003ccode\u003eb749f95\u003c/code\u003e\u003c/a\u003e Version 0.18.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/a32d59dd253305f5d2d75551223c1984b6f22910\"\u003e\u003ccode\u003ea32d59d\u003c/code\u003e\u003c/a\u003e Version 0.18.0a1 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/4a95083438a100224896a98e7392395e96bfbfce\"\u003e\u003ccode\u003e4a95083\u003c/code\u003e\u003c/a\u003e Update documentation (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/93baf9c0054f8623885fb658bc8299b8126c8e42\"\u003e\u003ccode\u003e93baf9c\u003c/code\u003e\u003c/a\u003e Publish documentation on tag push (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/330\"\u003e#330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/d8455d1434dc50cf3b57078288345609c8e5d7fc\"\u003e\u003ccode\u003ed8455d1\u003c/code\u003e\u003c/a\u003e Remove codecov (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/mangum/compare/0.17.0...0.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 3.5.0 to 4.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.3.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.2.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for the default language version before consulting a potentially unversioned \u003ccode\u003esys.executable\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3430\"\u003e#3430\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle error during conflict detection when a file is named \u0026quot;HEAD\u0026quot;\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3425\"\u003e#3425\u003c/a\u003e PR by \u003ca href=\"https://github.com/tusharsadhwani\"\u003e\u003ccode\u003e@​tusharsadhwani\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.1.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3348\"\u003e#3348\u003c/a\u003e PR by \u003ca href=\"https://github.com/fredrikekre\"\u003e\u003ccode\u003e@​fredrikekre\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2689\"\u003e#2689\u003c/a\u003e issue \u003ca href=\"https://github.com/jmuchovej\"\u003e\u003ccode\u003e@​jmuchovej\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.3.0 - 2025-08-09\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.2.0 - 2025-03-18\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for\nthe default language version before consulting a potentially unversioned\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1af6c8fa9502336c6977c2ff3e79185bd97a6e57\"\u003e\u003ccode\u003e1af6c8f\u003c/code\u003e\u003c/a\u003e v4.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/3358a3b54077cd8c8c99618aed003b771a21cb65\"\u003e\u003ccode\u003e3358a3b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e from pre-commit/hazmat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/bdf68790b78158268bbc8482f76491a61d75809a\"\u003e\u003ccode\u003ebdf6879\u003c/code\u003e\u003c/a\u003e add pre-commit hazmat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/e436690f140cbbe1d0f359654edf3ab9ecb8da2d\"\u003e\u003ccode\u003ee436690\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3584\"\u003e#3584\u003c/a\u003e from pre-commit/exitstack\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8d34f95308fc4c14dea3d3e90153acfdaf55e2de\"\u003e\u003ccode\u003e8d34f95\u003c/code\u003e\u003c/a\u003e use ExitStack instead of start + stop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/9c7ea88ab95cb063cb0f0b74f395ff7b9cdbe0c5\"\u003e\u003ccode\u003e9c7ea88\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3583\"\u003e#3583\u003c/a\u003e from pre-commit/forward-compat-map-manifest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/844dacc168d68a32553ecf8a99178ab395fdb11e\"\u003e\u003ccode\u003e844dacc\u003c/code\u003e\u003c/a\u003e add forward-compat error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/6a1d543e523a02bbaad43da7df594cedff242abd\"\u003e\u003ccode\u003e6a1d543\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3582\"\u003e#3582\u003c/a\u003e from pre-commit/move-gc-back\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/66278a9a0b69a69fde820d2b85a7e198eae52981\"\u003e\u003ccode\u003e66278a9\u003c/code\u003e\u003c/a\u003e move logic for gc back to commands.gc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1b32c50bc7e2f6b603b7ce26ecdf67c9c9dee3c6\"\u003e\u003ccode\u003e1b32c50\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3579\"\u003e#3579\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v3.5.0...v4.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.9 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.9...v2.12.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-xdist` from 3.6.1 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst\"\u003epytest-xdist's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epytest-xdist 3.8.0 (2025-06-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1083](https://github.com/pytest-dev/pytest-xdist/issues/1083) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1083\u0026gt;\u003c/code\u003e_: Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e option to control whether to automatically reorder tests in loadscope for tests where relative ordering matters. This only applies when using \u003ccode\u003eloadscope\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor example, [test_file_1, test_file_2, ..., test_file_n] are given as input test files, if \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e is used, for either worker, the \u003ccode\u003etest_file_a\u003c/code\u003e will be executed before \u003ccode\u003etest_file_b\u003c/code\u003e only if \u003ccode\u003ea \u0026lt; b\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default behavior is to reorder the tests to maximize the number of tests that can be executed in parallel.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003epytest-xdist 3.7.0 (2025-05-26)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1142](https://github.com/pytest-dev/pytest-xdist/issues/1142) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1142\u0026gt;\u003c/code\u003e_: Added support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1144](https://github.com/pytest-dev/pytest-xdist/issues/1144) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1144\u0026gt;\u003c/code\u003e_: The internal \u003ccode\u003esteal\u003c/code\u003e command is now atomic - it unschedules either all requested tests or none.\u003c/p\u003e\n\u003cp\u003eThis is a prerequisite for group/scope support in the \u003ccode\u003eworksteal\u003c/code\u003e scheduler, so test groups won't be broken up incorrectly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1170](https://github.com/pytest-dev/pytest-xdist/issues/1170) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1170\u0026gt;\u003c/code\u003e_: Add the \u003ccode\u003e--px\u003c/code\u003e arg to create proxy gateways.\u003c/p\u003e\n\u003cp\u003eProxy gateways are passed to additional gateways using the \u003ccode\u003evia\u003c/code\u003e keyword.\nThey can serve as a way to run multiple workers on remote machines.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1200](https://github.com/pytest-dev/pytest-xdist/issues/1200) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1200\u0026gt;\u003c/code\u003e_: Now multiple \u003ccode\u003exdist_group\u003c/code\u003e markers are considered when assigning tests to groups (order does not matter).\u003c/p\u003e\n\u003cp\u003ePreviously, only the last marker would assign a test to a group, but now if a test has multiple \u003ccode\u003exdist_group\u003c/code\u003e marks applied (for example via parametrization or via fixtures), they are merged to make a new group.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#1162](https://github.com/pytest-dev/pytest-xdist/issues/1162) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1162\u0026gt;\u003c/code\u003e_: Dropped support for EOL Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTrivial Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1092](https://github.com/pytest-dev/pytest-xdist/issues/1092) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1092\u0026gt;\u003c/code\u003e_: Update an error message to better indicate where users should go for more information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1190](https://github.com/pytest-dev/pytest-xdist/issues/1190) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1190\u0026gt;\u003c/code\u003e_: Switched to using a SPDX license identifier introduced in PEP 639.\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-xdist/commit/1e3e4dc16523c8a8f6c67d95a950166420718c99\"\u003e\u003ccode\u003e1e3e4dc\u003c/code\u003e\u003c/a\u003e Release 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/600aad575a4e4382855145b0c464d51b8f0b7242\"\u003e\u003ccode\u003e600aad5\u003c/code\u003e\u003c/a\u003e Ensure all xdist group names are strings (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1216\"\u003e#1216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/9d7ba5b5fbbbe26793fbfb7cb1903eb69425cf09\"\u003e\u003ccode\u003e9d7ba5b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/532f07fb181bb1546eda79bbe6b46bdb56c699e1\"\u003e\u003ccode\u003e532f07f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1210\"\u003e#1210\u003c/a\u003e from pytest-dev/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/0883ad085e0cf039c8ae13eb2789c1076544d225\"\u003e\u003ccode\u003e0883ad0\u003c/code\u003e\u003c/a\u003e Fix Path usage in \u003ccode\u003etest_rsync_roots_no_roots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/58a51bc14015d211761e44c2bdacab09c3893668\"\u003e\u003ccode\u003e58a51bc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/59a2ad0150697b9ff837f3ae8dcf6e074d5a114b\"\u003e\u003ccode\u003e59a2ad0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1220\"\u003e#1220\u003c/a\u003e from pytest-dev/dependabot/github_actions/github-act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/d42b9c72044855236c68286ca3bdb34486a05872\"\u003e\u003ccode\u003ed42b9c7\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/ebfcb99072aed3503fda5175245f28895a0204bb\"\u003e\u003ccode\u003eebfcb99\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1206\"\u003e#1206\u003c/a\u003e from pytest-dev/release-3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/23b7fd6054298a530b02b33d07007b3082a36277\"\u003e\u003ccode\u003e23b7fd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.8.0\"\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.25 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.25.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 `uvicorn` from 0.22.0 to 0.38.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.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 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/2723\"\u003eKludex/uvicorn#2723\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/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\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.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting 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/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\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/2709\"\u003eKludex/uvicorn#2709\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.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e by \u003ca href=\"https://...\n\n_Description has been truncated_","html_url":"https://github.com/awslabs/LISA/pull/602","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/602","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/602/packages"},{"uuid":"3709905004","node_id":"PR_kwDOL7kQEs633bSc","number":600,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-10T18:08:54.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-09T09:03:46.000Z","updated_at":"2025-12-10T18:08:55.000Z","time_to_close":119108,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":8,"packages":[{"name":"langchain-text-splitters","old_version":"0.3.11","new_version":"1.0.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-community","old_version":"0.3.27","new_version":"0.4.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"0.3.76","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pgvector","old_version":"0.2.5","new_version":"0.4.2","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"pypdf","old_version":"6.1.1","new_version":"6.4.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.1","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 8 updates in the /lib/rag/layer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `0.3.11` | `1.0.0` |\n| [langchain-community](https://github.com/langchain-ai/langchain) | `0.3.27` | `0.4.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.76` | `1.1.2` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `3.0.0` | `3.1.0` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.2.5` | `0.4.2` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.1.1` | `6.4.1` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.1` |\n\n\nUpdates `langchain-text-splitters` from 0.3.11 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-text-splitters's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-text-splitters==1.0.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-text-splitters==0.3.11\u003c/p\u003e\n\u003cp\u003erelease(text-splitters): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33565\"\u003e#33565\u003c/a\u003e)\nstyle: more work for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33508\"\u003e#33508\u003c/a\u003e)\ndocs: update package READMEs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33488\"\u003e#33488\u003c/a\u003e)\nchore(text-splitters): remove arg types from docstrings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33406\"\u003e#33406\u003c/a\u003e)\nstyle: \u003ccode\u003e.. code-block::\u003c/code\u003e admonition translations (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33400\"\u003e#33400\u003c/a\u003e)\nstyle: address Sphinx double-backtick snippet syntax (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33389\"\u003e#33389\u003c/a\u003e)\nstyle: remove more \u003ccode\u003eOptional\u003c/code\u003e syntax (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33371\"\u003e#33371\u003c/a\u003e)\nstyle: monorepo pass for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33359\"\u003e#33359\u003c/a\u003e)\nchore: enrich \u003ccode\u003epyproject.toml\u003c/code\u003e files with links to new references, others (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33343\"\u003e#33343\u003c/a\u003e)\nchore: clean up \u003ccode\u003epyproject.toml\u003c/code\u003e files, use core a7 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33334\"\u003e#33334\u003c/a\u003e)\nchore(text-splitters): cleanup ruff config  (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33247\"\u003e#33247\u003c/a\u003e)\nchore(infra): pdm -\u0026gt; hatchling (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33289\"\u003e#33289\u003c/a\u003e)\ndocs: v1 docs updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33173\"\u003e#33173\u003c/a\u003e)\nrelease(text-splitters): 1.0.0a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33214\"\u003e#33214\u003c/a\u003e)\nrefactor(text-splitters): drop python 3.9 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33212\"\u003e#33212\u003c/a\u003e)\nrelease: v1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32567\"\u003e#32567\u003c/a\u003e)\ndocs: more standardization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33124\"\u003e#33124\u003c/a\u003e)\nchore: bump ruff version to 0.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33043\"\u003e#33043\u003c/a\u003e)\ntest(text-splitters): capture beta warnings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33113\"\u003e#33113\u003c/a\u003e)\ntest(text-splitters): resolve pytest marker warning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33112\"\u003e#33112\u003c/a\u003e)\nchore: update \u003ccode\u003epyproject.toml\u003c/code\u003e files, remove codespell (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33028\"\u003e#33028\u003c/a\u003e)\nchore: bump mypy version to 1.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32914\"\u003e#32914\u003c/a\u003e)\nfix(text-splitters): add validation to prevent infinite loop and prevent empty token splitter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32205\"\u003e#32205\u003c/a\u003e)\nrevert: \u0026quot;chore: remove ruff target-version\u0026quot; (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32895\"\u003e#32895\u003c/a\u003e)\nchore: remove ruff target-version (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32880\"\u003e#32880\u003c/a\u003e)\nchore(docs): update package \u003ccode\u003eREADME\u003c/code\u003es (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32869\"\u003e#32869\u003c/a\u003e)\nchore(text-splitters): enable ruff docstring-code-format (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32854\"\u003e#32854\u003c/a\u003e)\nchore(text-splitters): select ALL rules with exclusions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32325\"\u003e#32325\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-text-splitters==1.0.0a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(text-splitters): 1.0.0a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33214\"\u003e#33214\u003c/a\u003e)\nrefactor(text-splitters): drop python 3.9 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33212\"\u003e#33212\u003c/a\u003e)\nrelease: v1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32567\"\u003e#32567\u003c/a\u003e)\ndocs: more standardization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33124\"\u003e#33124\u003c/a\u003e)\nchore: bump ruff version to 0.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33043\"\u003e#33043\u003c/a\u003e)\ntest(text-splitters): capture beta warnings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33113\"\u003e#33113\u003c/a\u003e)\ntest(text-splitters): resolve pytest marker warning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33112\"\u003e#33112\u003c/a\u003e)\nchore: update \u003ccode\u003epyproject.toml\u003c/code\u003e files, remove codespell (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33028\"\u003e#33028\u003c/a\u003e)\nchore: bump mypy version to 1.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32914\"\u003e#32914\u003c/a\u003e)\nfix(text-splitters): add validation to prevent infinite loop and prevent empty token splitter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32205\"\u003e#32205\u003c/a\u003e)\nrevert: \u0026quot;chore: remove ruff target-version\u0026quot; (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32895\"\u003e#32895\u003c/a\u003e)\nchore: remove ruff target-version (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32880\"\u003e#32880\u003c/a\u003e)\nchore(docs): update package \u003ccode\u003eREADME\u003c/code\u003es (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32869\"\u003e#32869\u003c/a\u003e)\nchore(text-splitters): enable ruff docstring-code-format (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32854\"\u003e#32854\u003c/a\u003e)\nchore(text-splitters): select ALL rules with exclusions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32325\"\u003e#32325\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/langchain-ai/langchain/commit/3b8cb3d4b6122311097c3a5e9801b911525373d0\"\u003e\u003ccode\u003e3b8cb3d\u003c/code\u003e\u003c/a\u003e release(text-splitters): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33565\"\u003e#33565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/15047ae28ae3646d11e6892f584910836729aa45\"\u003e\u003ccode\u003e15047ae\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33564\"\u003e#33564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/888fa3a2fbe1f900fbf88f9a98edde5b6074453b\"\u003e\u003ccode\u003e888fa3a\u003c/code\u003e\u003c/a\u003e release(standard-tests): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33563\"\u003e#33563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/90346b8a35d470da22f1d3c0fea01137dcd2b3b3\"\u003e\u003ccode\u003e90346b8\u003c/code\u003e\u003c/a\u003e release(core): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33562\"\u003e#33562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2d5efd7b290eab56e8787abfbdde15d27358d997\"\u003e\u003ccode\u003e2d5efd7\u003c/code\u003e\u003c/a\u003e fix(core): support for Python 3.14 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33461\"\u003e#33461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1d2273597a5aa8dda7d1785bd44030e00d78539c\"\u003e\u003ccode\u003e1d22735\u003c/code\u003e\u003c/a\u003e docs: more fixes for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33554\"\u003e#33554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9dd494ddcd3a31ffd673d8f40f386ad18d9e0ea1\"\u003e\u003ccode\u003e9dd494d\u003c/code\u003e\u003c/a\u003e fix(langchain): conditional tools -\u0026gt; end edge when all client side calls retu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2fa07b19f6ebb00802bda2fc71f83b2ac483b9fa\"\u003e\u003ccode\u003e2fa07b1\u003c/code\u003e\u003c/a\u003e chore(langchain_v1): relax typing on input state (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33552\"\u003e#33552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a022e3c14d6b2899bf0ee77b561b9ef1487e6375\"\u003e\u003ccode\u003ea022e3c\u003c/code\u003e\u003c/a\u003e feat(langchain_v1): Add ShellToolMiddleware and ClaudeBashToolMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33\"\u003e#33\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e0e11423d9aaf5c2e4e5031040618882737b0d7e\"\u003e\u003ccode\u003ee0e1142\u003c/code\u003e\u003c/a\u003e feat(langchain): file-search middleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33551\"\u003e#33551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-text-splitters==0.3.11...langchain-text-splitters==1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-community` from 0.3.27 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-community's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==0.3.80\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==0.3.79\u003c/p\u003e\n\u003cp\u003erelease(core): 0.3.80 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34039\"\u003e#34039\u003c/a\u003e)\nfix(core): fix validation for input variables in f-string templates, restrict functionality supported by jinja2, mustache templates  (GHSA-6qv9-48xg-fc7f) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34038\"\u003e#34038\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==0.3.79\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==0.3.78\u003c/p\u003e\n\u003cp\u003erelease(core): 0.3.79 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33401\"\u003e#33401\u003c/a\u003e)\nfix(core): handle parent/child mustache vars (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33346\"\u003e#33346\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==0.3.78\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==0.3.77\u003c/p\u003e\n\u003cp\u003erelease(core): 0.3.78 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33253\"\u003e#33253\u003c/a\u003e)\nfeat(core): add optional include_id param to convert_to_openai_messages function (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33248\"\u003e#33248\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==0.3.35\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==0.3.34\u003c/p\u003e\n\u003cp\u003erelease(openai): 0.3.35 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33299\"\u003e#33299\u003c/a\u003e)\nfeat(openai): enable stream_usage when using default base URL and client (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33296\"\u003e#33296\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\u003eSee full diff in \u003ca href=\"https://github.com/langchain-ai/langchain/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 0.3.76 to 1.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.1.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.1.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34253\"\u003e#34253\u003c/a\u003e)\nfix(core): pass \u003ccode\u003etool_call_id\u003c/code\u003e to \u003ccode\u003eon_tool_start\u003c/code\u003e callback (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34235\"\u003e#34235\u003c/a\u003e)\nchore(core): improve typing of messages utils functions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34225\"\u003e#34225\u003c/a\u003e)\nfix(core): prevent async task garbage collection (RUF006) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34238\"\u003e#34238\u003c/a\u003e)\nchore(core): use anext and deprecate py_anext (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34211\"\u003e#34211\u003c/a\u003e)\nfeat(core): support google maps grounding in genai block translator (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34244\"\u003e#34244\u003c/a\u003e)\ndocs(core,groq,openai): nits for ref docs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34243\"\u003e#34243\u003c/a\u003e)\ndocs(core): improve style for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34227\"\u003e#34227\u003c/a\u003e)\ndocs(core): update \u003ccode\u003eStrOutputParser\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34213\"\u003e#34213\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.1.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.1.0\u003c/p\u003e\n\u003cp\u003erelease: langchain-core 1.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34212\"\u003e#34212\u003c/a\u003e)\nfeat: Use uuid7 for run ids (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34172\"\u003e#34172\u003c/a\u003e)\nfix: tool call id bug introduced w/ runtime injection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34185\"\u003e#34185\u003c/a\u003e)\nchore: update test to be compatible with mem-optimized runtree (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34176\"\u003e#34176\u003c/a\u003e)\ndocs(core): update docstrings in \u003ccode\u003eRunnableConfig\u003c/code\u003e, \u003ccode\u003edereference_refs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34131\"\u003e#34131\u003c/a\u003e)\ndocs(anthropic,core,langchain): updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34106\"\u003e#34106\u003c/a\u003e)\nstyle(core,langchain,qdrant): fix some docstrings for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34105\"\u003e#34105\u003c/a\u003e)\nfix(core): handle missing \u003ccode\u003eStructuredPrompt\u003c/code\u003e schema (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34096\"\u003e#34096\u003c/a\u003e)\nfix(core): \u003ccode\u003eensure_ascii=False\u003c/code\u003e in \u003ccode\u003ePydanticOutputParser\u003c/code\u003e exception formatting (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34006\"\u003e#34006\u003c/a\u003e)\nfix(infra,core): nits (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34079\"\u003e#34079\u003c/a\u003e)\nstyle(core,langchain-classic,openai): fix griffe warnings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34074\"\u003e#34074\u003c/a\u003e)\nchore(docs): fix a few refs syntax errors (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34044\"\u003e#34044\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.1.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.8\u003c/p\u003e\n\u003cp\u003erelease(core): 1.1.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34063\"\u003e#34063\u003c/a\u003e)\nfeat(model-profiles): distribute data across packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34024\"\u003e#34024\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.0.7\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.0.7 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34036\"\u003e#34036\u003c/a\u003e)\nfix(core): fix validation for input variables in f-string templates, restrict functionality supported by jinja2, mustache templates (GHSA-6qv9-48xg-fc7f) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34035\"\u003e#34035\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.0.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.5\u003c/p\u003e\n\u003cp\u003erelease: langchain-core 1.0.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34018\"\u003e#34018\u003c/a\u003e)\nchore: Support tool runtime injection when custom args schema is prov… (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33999\"\u003e#33999\u003c/a\u003e)\nfeat(core): add proxy support for mermaid png rendering (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32400\"\u003e#32400\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.0.5\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.4\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/langchain-ai/langchain/commit/a0e86b18bf9c120807a8bbf239da0b2dedeb6249\"\u003e\u003ccode\u003ea0e86b1\u003c/code\u003e\u003c/a\u003e release(core): 1.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34253\"\u003e#34253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/6affec92ce4ccc563e03bcd23d7fe9d8547a85f2\"\u003e\u003ccode\u003e6affec9\u003c/code\u003e\u003c/a\u003e fix(core): pass \u003ccode\u003etool_call_id\u003c/code\u003e to \u003ccode\u003eon_tool_start\u003c/code\u003e callback (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34235\"\u003e#34235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a64aee310cd00663ca356658bf9b3fb3ff4cab34\"\u003e\u003ccode\u003ea64aee3\u003c/code\u003e\u003c/a\u003e chore(core): improve typing of messages utils functions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34225\"\u003e#34225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ba6c2590ae55869a8df7818a47c138dd5091b50e\"\u003e\u003ccode\u003eba6c259\u003c/code\u003e\u003c/a\u003e fix(core): prevent async task garbage collection (RUF006) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34238\"\u003e#34238\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/bb71f53585cf9b366d93d1a2329c6cfcb139ee66\"\u003e\u003ccode\u003ebb71f53\u003c/code\u003e\u003c/a\u003e chore(core): use anext and deprecate py_anext (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34211\"\u003e#34211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9875ffbabc4cc4dd4ba86f12d75cefc8c81b44c9\"\u003e\u003ccode\u003e9875ffb\u003c/code\u003e\u003c/a\u003e feat(core): support google maps grounding in genai block translator (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34244\"\u003e#34244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b5efafe80c82f72d5aef782032c8b6214a0b0030\"\u003e\u003ccode\u003eb5efafe\u003c/code\u003e\u003c/a\u003e release(openai): 1.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34252\"\u003e#34252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ff3353f02fae82e499b9d69ea61050105d807223\"\u003e\u003ccode\u003eff3353f\u003c/code\u003e\u003c/a\u003e fix(openai): Fixing error that comes up using the Responses API with built-in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3ace4e36808220d6a1c5402691f5d37867521458\"\u003e\u003ccode\u003e3ace4e3\u003c/code\u003e\u003c/a\u003e docs(core,groq,openai): nits for ref docs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34243\"\u003e#34243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/80c397019f0bc749c8679ed0d87ced3836e5ac5c\"\u003e\u003ccode\u003e80c3970\u003c/code\u003e\u003c/a\u003e docs(core): improve style for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34227\"\u003e#34227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==0.3.76...langchain-core==1.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\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.5 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.5...v0.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.1.1 to 6.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.4.1, 2025-12-07\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize loop for layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3543\"\u003e#3543\u003c/a\u003e) by \u003ca href=\"https://github.com/FelipeErmeson\"\u003e\u003ccode\u003e@​FelipeErmeson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not fail on choice field without /Opt key (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3540\"\u003e#3540\u003c/a\u003e) by \u003ca href=\"https://github.com/jhuber-de\"\u003e\u003ccode\u003e@​jhuber-de\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument possible issues with merge_page and clipping (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3546\"\u003e#3546\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd some notes about library security (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3545\"\u003e#3545\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance (MAINT)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse CORE_FONT_METRICS for widths where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3526\"\u003e#3526\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.4.0...6.4.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.4.0, 2025-11-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReduce default limit for LZW decoding by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParse and format comb fields in text widget annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3519\"\u003e#3519\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSilently ignore Adobe Ascii85 whitespace for suffix detection (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3528\"\u003e#3528\u003c/a\u003e) by \u003ca href=\"https://github.com/mbierma\"\u003e\u003ccode\u003e@​mbierma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.3.0...6.4.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.3.0, 2025-11-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWrap and align text in flattened PDF forms (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3465\"\u003e#3465\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix missing \u0026quot;PreventGC\u0026quot; when cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3520\"\u003e#3520\u003c/a\u003e) by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve JPEG image quality by default (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3516\"\u003e#3516\u003c/a\u003e) by \u003ca href=\"https://github.com/Lucas-C\"\u003e\u003ccode\u003e@​Lucas-C\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.2.0...6.3.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0, 2025-11-09\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'strict' parameter to PDFWriter (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3503\"\u003e#3503\u003c/a\u003e) by \u003ca href=\"https://github.com/Arya-A-Nair\"\u003e\u003ccode\u003e@​Arya-A-Nair\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.4.1, 2025-12-07\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize loop for layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3543\"\u003e#3543\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not fail on choice field without /Opt key (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3540\"\u003e#3540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument possible issues with merge_page and clipping (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3546\"\u003e#3546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd some notes about library security (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3545\"\u003e#3545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance (MAINT)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse CORE_FONT_METRICS for widths where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3526\"\u003e#3526\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.4.0...6.4.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.4.0, 2025-11-23\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReduce default limit for LZW decoding\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParse and format comb fields in text widget annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3519\"\u003e#3519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSilently ignore Adobe Ascii85 whitespace for suffix detection (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3528\"\u003e#3528\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.3.0...6.4.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.3.0, 2025-11-16\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWrap and align text in flattened PDF forms (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix missing \u0026quot;PreventGC\u0026quot; when cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3520\"\u003e#3520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve JPEG image quality by default (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3516\"\u003e#3516\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.2.0...6.3.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0, 2025-11-09\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'strict' parameter to PDFWriter (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePdfWriter.append fails when there are articles being None (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3509\"\u003e#3509\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\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/py-pdf/pypdf/commit/50ea3c63c155e36a880fa4a18d7552f6d42e7c2d\"\u003e\u003ccode\u003e50ea3c6\u003c/code\u003e\u003c/a\u003e REL: 6.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/fb6f0a13d921fee5f06fa15737025f690034c554\"\u003e\u003ccode\u003efb6f0a1\u003c/code\u003e\u003c/a\u003e DOC: Move version 1 to 2 migration docs to meta (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3547\"\u003e#3547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/502136619334a26c04eac41e9e7d2c0f2008708d\"\u003e\u003ccode\u003e5021366\u003c/code\u003e\u003c/a\u003e DOC: Document possible issues with merge_page and clipping (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3546\"\u003e#3546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/66f97a3760cef7353d3820c2b698a25d37e0a7bc\"\u003e\u003ccode\u003e66f97a3\u003c/code\u003e\u003c/a\u003e PI: Optimize loop for layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3543\"\u003e#3543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a0c8406c86cc68fa87a52ed406f662582276e871\"\u003e\u003ccode\u003ea0c8406\u003c/code\u003e\u003c/a\u003e DOC: Add some notes about library security (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3545\"\u003e#3545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c90fb727b16a49eb6989260c6cf1fdbf3331aa17\"\u003e\u003ccode\u003ec90fb72\u003c/code\u003e\u003c/a\u003e MAINT: Use CORE_FONT_METRICS for widths where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3526\"\u003e#3526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/7f8405cb975c6f97c7a3beefd9a05669279ce7ae\"\u003e\u003ccode\u003e7f8405c\u003c/code\u003e\u003c/a\u003e MAINT: Rename functions for better readability (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3538\"\u003e#3538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2ac3e22df8c47bda8b6f0f0db70ce89dc163e8ef\"\u003e\u003ccode\u003e2ac3e22\u003c/code\u003e\u003c/a\u003e DEV: Update pinned fontTools (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3544\"\u003e#3544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/28dafb10e230886652a9e0a90769a99df9377107\"\u003e\u003ccode\u003e28dafb1\u003c/code\u003e\u003c/a\u003e MAINT: Change error message (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3539\"\u003e#3539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/945e107b991ea17cad67bac1ceff614810b46960\"\u003e\u003ccode\u003e945e107\u003c/code\u003e\u003c/a\u003e DEV: Unify Python version specifiers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3542\"\u003e#3542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.1.1...6.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tiktoken` from 0.9.0 to 0.12.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/tiktoken/blob/main/CHANGELOG.md\"\u003etiktoken's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v0.12.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuild wheels for Python 3.14\u003c/li\u003e\n\u003cli\u003eBuild musllinux aarch64 wheels\u003c/li\u003e\n\u003cli\u003eSupport for free-threaded Python\u003c/li\u003e\n\u003cli\u003eUpdate version of \u003ccode\u003epyo3\u003c/code\u003e and \u003ccode\u003erustc-hash\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid use of \u003ccode\u003eblobfile\u003c/code\u003e for reading local files\u003c/li\u003e\n\u003cli\u003eRecognise \u003ccode\u003egpt-5\u003c/code\u003e model identifier\u003c/li\u003e\n\u003cli\u003eMinor performance improvement for file reading\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[v0.11.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003eGPT-5\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate version of \u003ccode\u003epyo3\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse new Rust edition\u003c/li\u003e\n\u003cli\u003eFix special token handling in \u003ccode\u003eencode_to_numpy\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBetter error handling\u003c/li\u003e\n\u003cli\u003eImprovements to private APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[v0.10.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for newer models\u003c/li\u003e\n\u003cli\u003eImprovements to private APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/97e49cbadd500b5cc9dbb51a486f0b42e6701bee\"\u003e\u003ccode\u003e97e49cb\u003c/code\u003e\u003c/a\u003e Release 0.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/948549882b36e8cc67e5cac885c3d1ed9c70d59f\"\u003e\u003ccode\u003e9485498\u003c/code\u003e\u003c/a\u003e Partial sync of codebase (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/451\"\u003e#451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/00ff187f59453a81683292c66cfd349ffa752b8d\"\u003e\u003ccode\u003e00ff187\u003c/code\u003e\u003c/a\u003e Add GPT-5 model support with o200k_base encoding (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/440\"\u003e#440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/5ee89ca1fa2ca12776bbd05785907f83d6a6b233\"\u003e\u003ccode\u003e5ee89ca\u003c/code\u003e\u003c/a\u003e chore: update dependencies (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/449\"\u003e#449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/2ab6d3706d557b560b200be48e6a32324682c9a3\"\u003e\u003ccode\u003e2ab6d37\u003c/code\u003e\u003c/a\u003e Support the free-threaded build (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/82dc3bbacc82aa766e6824def0dbf57b3537b37b\"\u003e\u003ccode\u003e82dc3bb\u003c/code\u003e\u003c/a\u003e bump PyO3 version (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/eedc856364506a9d4651645a0290eb0ba81e6935\"\u003e\u003ccode\u003eeedc856\u003c/code\u003e\u003c/a\u003e Partial sync of codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/5818d566268693d947c06ba76c3be2e48d8c6ded\"\u003e\u003ccode\u003e5818d56\u003c/code\u003e\u003c/a\u003e Partial sync of codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/3591ff175d6a80efbe4fcc7f0e219ddd4b8c52f1\"\u003e\u003ccode\u003e3591ff1\u003c/code\u003e\u003c/a\u003e Sync codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/4560a8896f5fb1d35c6f8fd6eee0399f9a1a27ca\"\u003e\u003ccode\u003e4560a88\u003c/code\u003e\u003c/a\u003e Sync codebase (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/openai/tiktoken/compare/0.9.0...0.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.5.0 to 2.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6.1\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a security issue where streaming API could improperly handle highly compressed HTTP content (\u0026quot;decompression bombs\u0026quot;) leading to excessive resource consumption even when a small amount of data was requested. Reading small chunks of compressed data is safer and much more efficient now. (CVE-2025-66471 reported by \u003ca href=\"https://github.com/Cycloctane\"\u003e\u003ccode\u003e@​Cycloctane\u003c/code\u003e\u003c/a\u003e, 8.9 High, GHSA-2xpw-w6gg-jr37)\u003c/li\u003e\n\u003cli\u003eFixed a security issue where an attacker could compose an HTTP response with virtually unlimited links in the \u003ccode\u003eContent-Encoding\u003c/code\u003e header, potentially leading to a denial of service (DoS) attack by exhausting system resources during decoding. The number of allowed chained encodings is now limited to 5. (CVE-2025-66418 reported by \u003ca href=\"https://github.com/illia-v\"\u003e\u003ccode\u003e@​illia-v\u003c/code\u003e\u003c/a\u003e, 8.9 High, GHSA-gm62-xv2j-4w53)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!IMPORTANT]\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf urllib3 is not installed with the optional \u003ccode\u003eurllib3[brotli]\u003c/code\u003e extra, but your environment contains a Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to  benefit from the security fixes and avoid warnings. Prefer using  \u003ccode\u003eurllib3[brotli]\u003c/code\u003e to install a compatible Brotli package automatically.\u003c/li\u003e\n\u003cli\u003eIf you use custom decompressors, please make sure to update them to  respect the changed API of \u003ccode\u003eurllib3.response.ContentDecoder\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnabled retrieval, deletion, and membership testing in \u003ccode\u003eHTTPHeaderDict\u003c/code\u003e using bytes keys. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3653\"\u003e#3653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded host and port information to string representations of \u003ccode\u003eHTTPConnection\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3666\"\u003e#3666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 free-threading builds explicitly. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3696\"\u003e#3696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers\u003c/code\u003e. Removed the \u003ccode\u003eHTTPResponse.getheader(name, default)\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers.get(name, default)\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed redirect handling in \u003ccode\u003eurllib3.PoolManager\u003c/code\u003e when an integer is passed for the retries parameter. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3649\"\u003e#3649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPConnectionPool\u003c/code\u003e when used in Emscripten with no explicit port. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed handling of \u003ccode\u003eSSLKEYLOGFILE\u003c/code\u003e with expandable variables. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3700\"\u003e#3700\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\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/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.6.1 (2025-12-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and\n\u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods.\n(\u003ccode\u003e[#3731](https://github.com/urllib3/urllib3/issues/3731) \u0026lt;https://github.com/urllib3/urllib3/issues/3731\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.6.0 (2025-12-05)\u003c/h1\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a security issue where streaming API could improperly handle highly\ncompressed HTTP content (\u0026quot;decompression bombs\u0026quot;) leading to excessive resource\nconsumption even when a small amount of data was requested. Reading small\nchunks of compressed data is safer and much more efficient now.\n(\u003ccode\u003eGHSA-2xpw-w6gg-jr37 \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-2xpw-w6gg-jr37\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFixed a security issue where an attacker could compose an HTTP response with\nvirtually unlimited links in the \u003ccode\u003eContent-Encoding\u003c/code\u003e header, potentially\nleading to a denial of service (DoS) attack by exhausting system resources\nduring decoding. The number of allowed chained encodings is now limited to 5.\n(\u003ccode\u003eGHSA-gm62-xv2j-4w53 \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-gm62-xv2j-4w53\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. caution::\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIf urllib3 is not installed with the optional \u003ccode\u003eurllib3[brotli]\u003c/code\u003e extra, but\nyour environment contains a Brotli/brotlicffi/brotlipy package anyway, make\nsure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to\nbenefit from the security fixes and avoid warnings. Prefer using\n\u003ccode\u003eurllib3[brotli]\u003c/code\u003e to install a compatible Brotli package automatically.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf you use custom decompressors, please make sure to update them to\nrespect the changed API of \u003ccode\u003eurllib3.response.ContentDecoder\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnabled retrieval, deletion, and membership testing in \u003ccode\u003eHTTPHeaderDict\u003c/code\u003e using bytes keys. (\u003ccode\u003e[#3653](https://github.com/urllib3/urllib3/issues/3653) \u0026lt;https://github.com/urllib3/urllib3/issues/3653\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded host and port information to string representations of \u003ccode\u003eHTTPConnection\u003c/code\u003e. (\u003ccode\u003e[#3666](https://github.com/urllib3/urllib3/issues/3666) \u0026lt;https://github.com/urllib3/urllib3/issues/3666\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 free-threading builds explicitly. (\u003ccode\u003e[#3696](https://github.com/urllib3/urllib3/issues/3696) \u0026lt;https://github.com/urllib3/urllib3/issues/3696\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers\u003c/code\u003e.\nRemoved the \u003ccode\u003eHTTPResponse.getheader(name, default)\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers.get(name, default)\u003c/code\u003e. (\u003ccode\u003e[#3622](https://github.com/urllib3/urllib3/issues/3622) \u0026lt;https://github.com/urllib3/urllib3/issues/3622\u0026gt;\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/urllib3/urllib3/commit/bfe8e198a13800e3ee8ef8124a8928acb170c843\"\u003e\u003ccode\u003ebfe8e19\u003c/code\u003e\u003c/a\u003e Release 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3ceeb84107946de22e9753fc1e6c075ab36d2c4c\"\u003e\u003ccode\u003e3ceeb84\u003c/code\u003e\u003c/a\u003e Restore \u003ccode\u003egetheaders()\u003c/code\u003e and \u003ccode\u003egetheader()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/720f484b605f18887a48eef448d0084e2b76902d\"\u003e\u003ccode\u003e720f484\u003c/code\u003e\u003c/a\u003e Release 2.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/24d7b67eac89f94e11003424bcf0d8f7b72222a8\"\u003e\u003ccode\u003e24d7b67\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/c19571de34c47de3a766541b041637ba5f716ed7\"\u003e\u003ccode\u003ec19571d\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/816fcf04528bc0f89672e13398eb813dcc892490\"\u003e\u003ccode\u003e816fcf0\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3725\"\u003e#3725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/18af0a10efc4c99dd028f7ad5a461470b9a8b0fd\"\u003e\u003ccode\u003e18af0a1\u003c/code\u003e\u003c/a\u003e Improve speed of \u003ccode\u003eBytesQueueBuffer.get()\u003c/code\u003e by using memoryview (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/1f6abac3e6d426c3939b8a17cf4afa099e691ab2\"\u003e\u003ccode\u003e1f6abac\u003c/code\u003e\u003c/a\u003e Bump versions of pre-commit hooks (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3716\"\u003e#3716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/1c8fbf787b8e6ed151842c5d6874c9d5bdbf1d0b\"\u003e\u003ccode\u003e1c8fbf7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3722\"\u003e#3722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/7784b9eee95b7c90802c02b111e98df70259ae4f\"\u003e\u003ccode\u003e7784b9e\u003c/code\u003e\u003c/a\u003e Add Python 3.15 to CI (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.5.0...2.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependenc...\n\n_Description has been truncated_","html_url":"https://github.com/awslabs/LISA/pull/600","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/600","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/600/packages"},{"uuid":"3678917144","node_id":"PR_kwDOKdDCc862PFDM","number":19634,"state":"closed","title":"chore(deps): bump opensearch-py from 2.8.0 to 3.1.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2025-12-01T02:15:30.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T02:15:07.000Z","updated_at":"2025-12-01T02:15:39.000Z","time_to_close":23,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 2.8.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=2.8.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/open-webui/open-webui/pull/19634","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-webui%2Fopen-webui/issues/19634","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19634/packages"},{"uuid":"3652621699","node_id":"PR_kwDOPGTqK8604GpZ","number":177,"state":"open","title":"Upgrade: [dependabot] - bump opensearch-py from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-21T18:05:31.000Z","updated_at":"2025-11-21T18:09:06.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Upgrade: [dependabot] -","packages":[{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/NHSDigital/eps-assist-me/pull/177","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NHSDigital%2Feps-assist-me/issues/177","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/177/packages"},{"uuid":"3650863960","node_id":"PR_kwDOAIsq8s60yIOz","number":19091,"state":"closed","title":"chore(deps): bump opensearch-py from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-17T16:18:38.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-21T09:18:39.000Z","updated_at":"2025-12-17T16:18:48.000Z","time_to_close":2271599,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/pypi/warehouse/pull/19091","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypi%2Fwarehouse/issues/19091","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19091/packages"},{"uuid":"2912889534","node_id":"PR_kwDOL7kQEs6tnyq-","number":504,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-15T06:00:36.079Z","updated_at":"2025-10-18T20:21:27.375Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":27,"packages":[{"name":"pyarrow","old_version":"17.0.0","new_version":"21.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"datasets","old_version":"2.20.0","new_version":"4.2.0","repository_url":"https://github.com/huggingface/datasets"},{"name":"fastapi","old_version":"0.111.1","new_version":"0.119.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"locust","old_version":"2.25.0","new_version":"2.41.6","repository_url":"https://github.com/locustio/locust"},{"name":"mangum","old_version":"0.17.0","new_version":"0.19.0","repository_url":"https://github.com/Kludex/mangum"},{"name":"pre-commit","old_version":"3.5.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pydantic","old_version":"2.11.9","new_version":"2.12.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"pytest-asyncio","old_version":"0.25","new_version":"1.2.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"uvicorn","old_version":"0.22.0","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"boto3","old_version":"1.35.95","new_version":"1.40.51","repository_url":"https://github.com/boto/boto3"},{"name":"tiktoken","old_version":"0.11.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"pypdf","old_version":"6.0.0","new_version":"6.1.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"langchain-community","old_version":"0.3.27","new_version":"0.3.31","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"0.3.76","new_version":"0.3.79","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"0.3.33","new_version":"0.3.35","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.1","repository_url":"https://github.com/tkem/cachetools"},{"name":"pytest","old_version":"8.3.2","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"moto","old_version":"5.0.3","new_version":"5.1.14"},{"name":"lxml","old_version":"5.3.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"black","old_version":"24.3.0","new_version":"25.9.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":"mypy","old_version":"1.9.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pydantic-core","old_version":"2.33.2","new_version":"2.41.3","repository_url":"https://github.com/pydantic/pydantic-core"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pyarrow](https://github.com/apache/arrow) | `17.0.0` | `21.0.0` |\n| [datasets](https://github.com/huggingface/datasets) | `2.20.0` | `4.2.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.1` | `0.119.0` |\n| [locust](https://github.com/locustio/locust) | `2.25.0` | `2.41.6` |\n| [mangum](https://github.com/Kludex/mangum) | `0.17.0` | `0.19.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `3.5.0` | `4.3.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.9` | `2.12.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.25` | `1.2.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.22.0` | `0.37.0` |\n| [boto3](https://github.com/boto/boto3) | `1.35.95` | `1.40.51` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.11.0` | `0.12.0` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.0.0` | `6.1.1` |\n| [langchain-community](https://github.com/langchain-ai/langchain) | `0.3.27` | `0.3.31` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.76` | `0.3.79` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `0.3.33` | `0.3.35` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.2` | `8.4.2` |\n| [moto[all]](https://github.com/getmoto/moto) | `5.0.3` | `5.1.14` |\n| [lxml](https://github.com/lxml/lxml) | `5.3.0` | `6.0.2` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [black](https://github.com/psf/black) | `24.3.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [mypy](https://github.com/python/mypy) | `1.9.0` | `1.18.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.3` |\n\n\nUpdates `pyarrow` from 17.0.0 to 21.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/apache/arrow/releases\"\u003epyarrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eApache Arrow 21.0.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/21.0.0.html\"\u003ehttps://arrow.apache.org/release/21.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC6\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC6\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC5\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC5\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC4\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC4\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC3\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC3\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC2\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC2\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/20.0.0.html\"\u003ehttps://arrow.apache.org/release/20.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0 RC2\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 20.0.0 RC2\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0 RC1\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 20.0.0 RC1\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0 RC0\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 20.0.0 RC0\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.1\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/19.0.1.html\"\u003ehttps://arrow.apache.org/release/19.0.1.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.1 RC1\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 19.0.1 RC1\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.1 RC0\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 19.0.1 RC0\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/19.0.0.html\"\u003ehttps://arrow.apache.org/release/19.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.0 RC0\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 19.0.0 RC0\u003c/p\u003e\n\u003ch2\u003eApache Arrow 18.1.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/18.1.0.html\"\u003ehttps://arrow.apache.org/release/18.1.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 18.1.0 RC2\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 18.1.0 RC2\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/apache/arrow/commit/ee4d09ebef61c663c1efbfa4c18e518a03b798be\"\u003e\u003ccode\u003eee4d09e\u003c/code\u003e\u003c/a\u003e MINOR: [Release] Update versions for 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/f13a5796008e3a5e546af1a7b2be0fbd3c148c26\"\u003e\u003ccode\u003ef13a579\u003c/code\u003e\u003c/a\u003e MINOR: [Release] Update .deb/.rpm changelogs for 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/6fd2a167e0ed74dbe4c059e579a561fcc2aae11f\"\u003e\u003ccode\u003e6fd2a16\u003c/code\u003e\u003c/a\u003e MINOR: [Release] Update CHANGELOG.md for 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/cf261bf58ae74a1f7fa99d81c201ca8e1d679c9b\"\u003e\u003ccode\u003ecf261bf\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47078\"\u003eGH-47078\u003c/a\u003e: [Release] Ensure using cloned apache/arrow for reproducible check (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/ddbc3dc005dfdde5a79d42cb5953190479b12b73\"\u003e\u003ccode\u003eddbc3dc\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47074\"\u003eGH-47074\u003c/a\u003e: [Release] Use reproducible mtime for csharp/ in source archive (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47\"\u003e#47\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/0534eb2d279f445ac67b99a22eca344484749b6f\"\u003e\u003ccode\u003e0534eb2\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47071\"\u003eGH-47071\u003c/a\u003e: [Release] Dereference all hard links in source archive (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47072\"\u003e#47072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/f845b4184664aee522f7fd73864d3093e84b6580\"\u003e\u003ccode\u003ef845b41\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47069\"\u003eGH-47069\u003c/a\u003e: [Release] Add missing \u0026quot;needs: target\u0026quot; (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47070\"\u003e#47070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/1c08f8ee6947bd2a9bffb441af946c6a7373015b\"\u003e\u003ccode\u003e1c08f8e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47067\"\u003eGH-47067\u003c/a\u003e: [Release] Fix wrong GitHub Actions context in verify_rc.yml (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47068\"\u003e#47068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/70e5c51e6d5de1ca6f669b47ff0b98e1075336d0\"\u003e\u003ccode\u003e70e5c51\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47065\"\u003eGH-47065\u003c/a\u003e: [Release] Fix timeout key in verify_rc.yml (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47066\"\u003e#47066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/254a85c8bddb52eef03d623882836717f027061d\"\u003e\u003ccode\u003e254a85c\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47063\"\u003eGH-47063\u003c/a\u003e: [Release] Define missing RELEASE_TARBALL (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47064\"\u003e#47064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/apache/arrow/compare/go/v17.0.0...apache-arrow-21.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `datasets` from 2.20.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/datasets/releases\"\u003edatasets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.0\u003c/h2\u003e\n\u003ch2\u003eDataset Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSample without replacement option when interleaving datasets by \u003ca href=\"https://github.com/radulescupetru\"\u003e\u003ccode\u003e@​radulescupetru\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7786\"\u003ehuggingface/datasets#7786\u003c/a\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eds = interleave_datasets(datasets, stopping_strategy=\u0026quot;all_exhausted_without_replacement\u0026quot;)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eParquet: add \u003ccode\u003eon_bad_files\u003c/code\u003e argument to error/warn/skip bad files by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7806\"\u003ehuggingface/datasets#7806\u003c/a\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eds = load_dataset(parquet_dataset_id, on_bad_files=\u0026quot;warn\u0026quot;)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd parquet scan options and docs by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7801\"\u003ehuggingface/datasets#7801\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs to select columns and filter data efficiently\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eds = load_dataset(parquet_dataset_id, columns=[\u0026quot;col_0\u0026quot;, \u0026quot;col_1\u0026quot;])\nds = load_dataset(parquet_dataset_id, filters=[(\u0026quot;col_0\u0026quot;, \u0026quot;==\u0026quot;, 0)])\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003enew argument to control buffering and caching when streaming\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efragment_scan_options = pyarrow.dataset.ParquetFragmentScanOptions(cache_options=pyarrow.CacheOptions(prefetch_limit=1, range_size_limit=128 \u0026lt;\u0026lt; 20))\nds = load_dataset(parquet_dataset_id, streaming=True, fragment_scan_options=fragment_scan_options)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocument HDF5 support by \u003ca href=\"https://github.com/klamike\"\u003e\u003ccode\u003e@​klamike\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7740\"\u003ehuggingface/datasets#7740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate tips in docs by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7790\"\u003ehuggingface/datasets#7790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: avoid some copies in torch formatter by \u003ca href=\"https://github.com/drbh\"\u003e\u003ccode\u003e@​drbh\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7787\"\u003ehuggingface/datasets#7787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport huggingface_hub v0.x and v1.x by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7783\"\u003ehuggingface/datasets#7783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDefine CI future by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7799\"\u003ehuggingface/datasets#7799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMore Parquet streaming docs by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7803\"\u003ehuggingface/datasets#7803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLess api calls when resolving data_files by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7805\"\u003ehuggingface/datasets#7805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etypo by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7807\"\u003ehuggingface/datasets#7807\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/drbh\"\u003e\u003ccode\u003e@​drbh\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7787\"\u003ehuggingface/datasets#7787\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/huggingface/datasets/compare/4.1.1...4.2.0\"\u003ehttps://github.com/huggingface/datasets/compare/4.1.1...4.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix iterate nested field by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7775\"\u003ehuggingface/datasets#7775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for arrow iterable when concatenating or interleaving by \u003ca href=\"https://github.com/radulescupetru\"\u003e\u003ccode\u003e@​radulescupetru\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7771\"\u003ehuggingface/datasets#7771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix empty dataset to_parquet by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7779\"\u003ehuggingface/datasets#7779\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/huggingface/datasets/commit/7e1350b41d19eabc961e7de9e26f1aa09f18e110\"\u003e\u003ccode\u003e7e1350b\u003c/code\u003e\u003c/a\u003e release: 4.2.0 (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7808\"\u003e#7808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/fd8d287a98c4970d4634f92f5d7b74eb73e7dca4\"\u003e\u003ccode\u003efd8d287\u003c/code\u003e\u003c/a\u003e typo (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7807\"\u003e#7807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/5eec91a1a8634f9a1bd5bbbb19ed116d6bffc6e1\"\u003e\u003ccode\u003e5eec91a\u003c/code\u003e\u003c/a\u003e Parquet: add \u003ccode\u003eon_bad_file\u003c/code\u003e argument to error/warn/skip bad files (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7806\"\u003e#7806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/02ee330625d3276b57b88cd513ab628bf38d1a3e\"\u003e\u003ccode\u003e02ee330\u003c/code\u003e\u003c/a\u003e Less api calls when resolving data_files (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7805\"\u003e#7805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/cfcdfce542f7ea6a0b98fafa1fb8a78d65c960b5\"\u003e\u003ccode\u003ecfcdfce\u003c/code\u003e\u003c/a\u003e More Parquet streaming docs (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7803\"\u003e#7803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/4e18df164eec0a4472cb7703ef224e213b1e428d\"\u003e\u003ccode\u003e4e18df1\u003c/code\u003e\u003c/a\u003e Add parquet scan options and docs (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7801\"\u003e#7801\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/6f2502c5a026caa89839713f6f7c8b958e5e83eb\"\u003e\u003ccode\u003e6f2502c\u003c/code\u003e\u003c/a\u003e Sample without replacement option when interleaving datasets (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7786\"\u003e#7786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/095c7dc542929ccd45fddf2bad578f75a07caa29\"\u003e\u003ccode\u003e095c7dc\u003c/code\u003e\u003c/a\u003e Define CI future (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7799\"\u003e#7799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/a0c786c73a165415ca5f7a2334fdbe787a602167\"\u003e\u003ccode\u003ea0c786c\u003c/code\u003e\u003c/a\u003e Support huggingface_hub v0.x and v1.x (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7783\"\u003e#7783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/c412a6f5a50955e141c5169bf7abe005d10228d2\"\u003e\u003ccode\u003ec412a6f\u003c/code\u003e\u003c/a\u003e feat: avoid some copies in torch formatter (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7787\"\u003e#7787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/datasets/compare/2.20.0...4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.111.1 to 0.119.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.119.0\u003c/h2\u003e\n\u003cp\u003eFastAPI now (temporarily) supports both Pydantic v2 models and \u003ccode\u003epydantic.v1\u003c/code\u003e models at the same time in the same app, to make it easier for any FastAPI apps still using Pydantic v1 to gradually but quickly \u003cstrong\u003emigrate to Pydantic v2\u003c/strong\u003e.\u003c/p\u003e\n\u003cpre lang=\"Python\"\u003e\u003ccode\u003efrom fastapi import FastAPI\nfrom pydantic import BaseModel as BaseModelV2\nfrom pydantic.v1 import BaseModel\n\u003cp\u003eclass Item(BaseModel):\u003cbr /\u003e\nname: str\u003cbr /\u003e\ndescription: str | None = None\u003c/p\u003e\n\u003cp\u003eclass ItemV2(BaseModelV2):\u003cbr /\u003e\ntitle: str\u003cbr /\u003e\nsummary: str | None = None\u003c/p\u003e\n\u003cp\u003eapp = FastAPI()\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/app\"\u003e\u003ccode\u003e@​app\u003c/code\u003e\u003c/a\u003e.post(\u0026quot;/items/\u0026quot;, response_model=ItemV2)\u003cbr /\u003e\ndef create_item(item: Item):\u003cbr /\u003e\nreturn {\u0026quot;title\u0026quot;: item.name, \u0026quot;summary\u0026quot;: item.description}\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAdding this feature was a big effort with the main objective of making it easier for the few applications still stuck in Pydantic v1 to migrate to Pydantic v2.\u003c/p\u003e\n\u003cp\u003eAnd with this, support for \u003cstrong\u003ePydantic v1 is now deprecated\u003c/strong\u003e and will be \u003cstrong\u003eremoved\u003c/strong\u003e from FastAPI in a future version soon.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: have in mind that the Pydantic team already stopped supporting Pydantic v1 for recent versions of Python, starting with Python 3.14.\u003c/p\u003e\n\u003cp\u003eYou can read in the docs more about how to \u003ca href=\"https://fastapi.tiangolo.com/how-to/migrate-from-pydantic-v1-to-pydantic-v2/\"\u003eMigrate from Pydantic v1 to Pydantic v2\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003efrom pydantic.v1 import BaseModel\u003c/code\u003e, mixed Pydantic v1 and v2 models in the same app. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14168\"\u003e#14168\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.118.3\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.14. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14165\"\u003e#14165\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.118.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix tagged discriminated union not recognized as body field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12942\"\u003e#12942\u003c/a\u003e by \u003ca href=\"https://github.com/frankie567\"\u003e\u003ccode\u003e@​frankie567\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2e721e1b02186467dc3a7a95dfe45d8e7bd7d0d9\"\u003e\u003ccode\u003e2e721e1\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.119.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fc7a0686af29c7793b3cc999f1af47bf05f5fa74\"\u003e\u003ccode\u003efc7a068\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3a3879b2c3c33daf91121b30c78a41e1d8440a3d\"\u003e\u003ccode\u003e3a3879b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d34918abf00c93ac592c5d1d1c55650d8c1b92ec\"\u003e\u003ccode\u003ed34918a\u003c/code\u003e\u003c/a\u003e ✨ Add support for \u003ccode\u003efrom pydantic.v1 import BaseModel\u003c/code\u003e, mixed Pydantic v1 and ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/352dbefc634b21cff94663be1ab0a1aa5dbd6ed5\"\u003e\u003ccode\u003e352dbef\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.118.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/96e7d6eaa47e3ce421477188735a800b2dffa580\"\u003e\u003ccode\u003e96e7d6e\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3611c3fc5b827ad8e131726152865e71afe2b981\"\u003e\u003ccode\u003e3611c3f\u003c/code\u003e\u003c/a\u003e ⬆️ Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14165\"\u003e#14165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/942fce394bd66b841b9399cff815bb8a18cfd4c6\"\u003e\u003ccode\u003e942fce3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.118.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/13b067c9b677dc7c2aa692b5576768ee0253c4eb\"\u003e\u003ccode\u003e13b067c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/185cecd891ee9591fd0f3beb65b412339d152bf4\"\u003e\u003ccode\u003e185cecd\u003c/code\u003e\u003c/a\u003e 🐛 Fix tagged discriminated union not recognized as body field (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/12942\"\u003e#12942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.111.1...0.119.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `locust` from 2.25.0 to 2.41.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/locustio/locust/releases\"\u003elocust's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.41.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and test it by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3235\"\u003elocustio/locust#3235\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.5...2.41.6\"\u003ehttps://github.com/locustio/locust/compare/2.41.5...2.41.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse www host instead of bare locust.cloud in examples and tests by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3234\"\u003elocustio/locust#3234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix FastHttpUser handling of 308 response code \u003ca href=\"https://github.com/locustio/locust/commit/70184dfbf8d93ed211ec6371cb1f18bddc3a8d5c\"\u003ehttps://github.com/locustio/locust/commit/70184dfbf8d93ed211ec6371cb1f18bddc3a8d5c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Unsafe Template Arg by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3232\"\u003elocustio/locust#3232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.3...2.41.5\"\u003ehttps://github.com/locustio/locust/compare/2.41.3...2.41.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnhance MilvusUser constructor to support additional collection parameters by \u003ca href=\"https://github.com/zhuwenxing\"\u003e\u003ccode\u003e@​zhuwenxing\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3229\"\u003elocustio/locust#3229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake workers correctly ignore the --run-time flag by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3230\"\u003elocustio/locust#3230\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.2...2.41.3\"\u003ehttps://github.com/locustio/locust/compare/2.41.2...2.41.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Alignment of View Column Selector by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3226\"\u003elocustio/locust#3226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePytest plugin: Workaround issue with potential duplicate --host argument definition by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3228\"\u003elocustio/locust#3228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.1...2.41.2\"\u003ehttps://github.com/locustio/locust/compare/2.41.1...2.41.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.1\u003c/h2\u003e\n\u003cp\u003eFix incorrect url for feedback form\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.0...2.41.1\"\u003ehttps://github.com/locustio/locust/compare/2.41.0...2.41.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSuggest possibly misspelled command line arguments (Did you mean ...) by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3224\"\u003elocustio/locust#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Locust Feedback Form by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3223\"\u003elocustio/locust#3223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MqttUser by \u003ca href=\"https://github.com/ionutab\"\u003e\u003ccode\u003e@​ionutab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3216\"\u003elocustio/locust#3216\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.40.5...2.41.0\"\u003ehttps://github.com/locustio/locust/compare/2.40.5...2.41.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.40.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid wrapping fast response in response context manager when not needed by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3222\"\u003elocustio/locust#3222\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/locustio/locust/blob/master/CHANGELOG.md\"\u003elocust's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.6\"\u003e2.41.6\u003c/a\u003e (2025-10-10)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.5...2.41.6\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and test it \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3235\"\u003e#3235\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.5\"\u003e2.41.5\u003c/a\u003e (2025-10-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.4...2.41.5\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse www host instead of bare locust.cloud in examples and tests \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3234\"\u003e#3234\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.4\"\u003e2.41.4\u003c/a\u003e (2025-10-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.3...2.41.4\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Unsafe Template Arg \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3232\"\u003e#3232\u003c/a\u003e (\u003ca href=\"https://github.com/andrewbaldwin44\"\u003eandrewbaldwin44\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.3\"\u003e2.41.3\u003c/a\u003e (2025-10-01)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.2...2.41.3\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake workers correctly ignore the --run-time flag \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3230\"\u003e#3230\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance MilvusUser constructor to support additional collection parameters \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3229\"\u003e#3229\u003c/a\u003e (\u003ca href=\"https://github.com/zhuwenxing\"\u003ezhuwenxing\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.2\"\u003e2.41.2\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.1...2.41.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFixed bugs:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLocust pytest plugin option '--host' conflicts with common user options; suggest renaming to '--locust-host' \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3227\"\u003e#3227\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePytest plugin: Workaround issue with potential duplicate --host argument definition \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3228\"\u003e#3228\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Alignment of View Column Selector \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3226\"\u003e#3226\u003c/a\u003e (\u003ca href=\"https://github.com/andrewbaldwin44\"\u003eandrewbaldwin44\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-25)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.0...2.41.1\"\u003eFull Changelog\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/locustio/locust/commit/9b569474c17a21fd9b80ef5b2280c489fadc2e1a\"\u003e\u003ccode\u003e9b56947\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3235\"\u003e#3235\u003c/a\u003e from locustio/officially-support-python-3.14-and-tes...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/d48665a768fec265517ec815862b4f6fd258cd33\"\u003e\u003ccode\u003ed48665a\u003c/code\u003e\u003c/a\u003e Explicitly mention Python 3.14 support in package \u0026amp; add it to automated testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/894ae53ecf1ae324b60109683c568406adcffa32\"\u003e\u003ccode\u003e894ae53\u003c/code\u003e\u003c/a\u003e Use \u003ca href=\"http://www.locust.cloud\"\u003ewww.locust.cloud\u003c/a\u003e host instead of bare locust.cloud in examples and tests ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/70184dfbf8d93ed211ec6371cb1f18bddc3a8d5c\"\u003e\u003ccode\u003e70184df\u003c/code\u003e\u003c/a\u003e FastHttpUser: Allow http status code 308\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/34b1d9416134d4e83aaa2a49808ff48bf660bce3\"\u003e\u003ccode\u003e34b1d94\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3232\"\u003e#3232\u003c/a\u003e from andrewbaldwin44/bugfix/unsafe-template-arg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/7aea5eb8f8b670cf6d4b19ad5721c85c6afa4331\"\u003e\u003ccode\u003e7aea5eb\u003c/code\u003e\u003c/a\u003e Fix unsafe template arg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/367d6b0880e3cb0b12f020f96eed3e6238ae8d9e\"\u003e\u003ccode\u003e367d6b0\u003c/code\u003e\u003c/a\u003e changelog fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/b1e9132d09c791fec3520ae1bf9d8e5acacb9ea4\"\u003e\u003ccode\u003eb1e9132\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/ea958aa9d69ff64882d87d134e85af5a22ba4290\"\u003e\u003ccode\u003eea958aa\u003c/code\u003e\u003c/a\u003e Bump locust-cloud version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/b8626e3c827b130d98dd434b6680f2ac8af6e93c\"\u003e\u003ccode\u003eb8626e3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3230\"\u003e#3230\u003c/a\u003e from locustio/fix-issue-with---run-time-on-workers\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/locustio/locust/compare/2.25.0...2.41.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mangum` from 0.17.0 to 0.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/mangum/releases\"\u003emangum's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for lifespan state 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/mangum/pull/337\"\u003eKludex/mangum#337\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/mangum/compare/0.18.0...0.19.0\"\u003ehttps://github.com/Kludex/mangum/compare/0.18.0...0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0\u003c/h2\u003e\n\u003cp\u003eMangum officially supports Python 3.13! 🎉\u003c/p\u003e\n\u003cp\u003eNothing changes from 0.18.0a1.\u003c/p\u003e\n\u003ch2\u003e0.18.0a1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix a broken link to asgi-frameworks limitations by \u003ca href=\"https://github.com/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate project 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/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc: remove expired domain from README by \u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proper publish workflow 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/mangum/pull/328\"\u003eKludex/mangum#328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove codecov 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/mangum/pull/329\"\u003eKludex/mangum#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePublish documentation on tag push 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/mangum/pull/330\"\u003eKludex/mangum#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate documentation 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/mangum/pull/331\"\u003eKludex/mangum#331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 0.18.0a1 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/mangum/pull/332\"\u003eKludex/mangum#332\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/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\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/mangum/compare/0.17.0...0.18.0a1\"\u003ehttps://github.com/Kludex/mangum/compare/0.17.0...0.18.0a1\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/mangum/blob/main/CHANGELOG.md\"\u003emangum's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.19.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://asgi.readthedocs.io/en/latest/specs/lifespan.html#lifespan-state\"\u003eLifespan State\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.18.0\u003c/h1\u003e\n\u003cp\u003eNo changes were made compared to 0.18.0a1.\u003c/p\u003e\n\u003ch1\u003e0.18.0a1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\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/mangum/commit/4152a4eb8d325e382f41e4b04628671565f12a2d\"\u003e\u003ccode\u003e4152a4e\u003c/code\u003e\u003c/a\u003e Version 0.19.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/631b930e72a43d7872ca177b84fa3cfca8714a99\"\u003e\u003ccode\u003e631b930\u003c/code\u003e\u003c/a\u003e Add support for lifespan state (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/5a7121d56b2a7868e3331a1c4bc278711693a142\"\u003e\u003ccode\u003e5a7121d\u003c/code\u003e\u003c/a\u003e Update linting and type checker setup (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b7e18ede3eadb38cc5d536d4c46a0a5ffa160270\"\u003e\u003ccode\u003eb7e18ed\u003c/code\u003e\u003c/a\u003e Remove FUNDING.yml (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/c8246c556e068590d91b98d6516e7f87a5703640\"\u003e\u003ccode\u003ec8246c5\u003c/code\u003e\u003c/a\u003e Create CNAME (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b749f9530e12ee90461628eaeadbc644fa89dd3e\"\u003e\u003ccode\u003eb749f95\u003c/code\u003e\u003c/a\u003e Version 0.18.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/a32d59dd253305f5d2d75551223c1984b6f22910\"\u003e\u003ccode\u003ea32d59d\u003c/code\u003e\u003c/a\u003e Version 0.18.0a1 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/4a95083438a100224896a98e7392395e96bfbfce\"\u003e\u003ccode\u003e4a95083\u003c/code\u003e\u003c/a\u003e Update documentation (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/93baf9c0054f8623885fb658bc8299b8126c8e42\"\u003e\u003ccode\u003e93baf9c\u003c/code\u003e\u003c/a\u003e Publish documentation on tag push (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/330\"\u003e#330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/d8455d1434dc50cf3b57078288345609c8e5d7fc\"\u003e\u003ccode\u003ed8455d1\u003c/code\u003e\u003c/a\u003e Remove codecov (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/mangum/compare/0.17.0...0.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 3.5.0 to 4.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.3.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.2.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for the default language version before consulting a potentially unversioned \u003ccode\u003esys.executable\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3430\"\u003e#3430\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle error during conflict detection when a file is named \u0026quot;HEAD\u0026quot;\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3425\"\u003e#3425\u003c/a\u003e PR by \u003ca href=\"https://github.com/tusharsadhwani\"\u003e\u003ccode\u003e@​tusharsadhwani\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.1.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3348\"\u003e#3348\u003c/a\u003e PR by \u003ca href=\"https://github.com/fredrikekre\"\u003e\u003ccode\u003e@​fredrikekre\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2689\"\u003e#2689\u003c/a\u003e issue \u003ca href=\"https://github.com/jmuchovej\"\u003e\u003ccode\u003e@​jmuchovej\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable automatic toolchain switching for \u003ccode\u003elanguage: golang\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3304\"\u003e#3304\u003c/a\u003e PR by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3300\"\u003e#3300\u003c/a\u003e issue by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3149\"\u003e#3149\u003c/a\u003e issue by \u003ca href=\"https://github.com/nijel\"\u003e\u003ccode\u003e@​nijel\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: r\u003c/code\u003e installation when initiated by RStudio.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3389\"\u003e#3389\u003c/a\u003e PR by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3385\"\u003e#3385\u003c/a\u003e issue by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.0.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003epre-commit migrate-config\u003c/code\u003e for unquoted deprecated stages names with\npurelib \u003ccode\u003epyyaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3324\"\u003e#3324\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit-ci/issues/issues/234\"\u003epre-commit-ci/issues#234\u003c/a\u003e issue by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.0.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove \u003ccode\u003epre-commit migrate-config\u003c/code\u003e to handle more yaml formats.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3301\"\u003e#3301\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003estages\u003c/code\u003e deprecation in \u003ccode\u003epre-commit migrate-config\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3302\"\u003e#3302\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2732\"\u003e#2732\u003c/a\u003e issue by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.3.0 - 2025-08-09\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.2.0 - 2025-03-18\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for\nthe default language version before consulting a potentially unversioned\n\u003ccode\u003esys.executable\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3430\"\u003e#3430\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle error during conflict detection when a file is named \u0026quot;HEAD\u0026quot;\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3425\"\u003e#3425\u003c/a\u003e PR by \u003ca href=\"https://github.com/tusharsadhwani\"\u003e\u003ccode\u003e@​tusharsadhwani\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.1.0 - 2025-01-20\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3348\"\u003e#3348\u003c/a\u003e PR by \u003ca href=\"https://github.com/fredrikekre\"\u003e\u003ccode\u003e@​fredrikekre\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2689\"\u003e#2689\u003c/a\u003e issue \u003ca href=\"https://github.com/jmuchovej\"\u003e\u003ccode\u003e@​jmuchovej\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable automatic toolchain switching for \u003ccode\u003elanguage: golang\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3304\"\u003e#3304\u003c/a\u003e PR by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3300\"\u003e#3300\u003c/a\u003e issue by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3149\"\u003e#3149\u003c/a\u003e issue by \u003ca href=\"https://github.com/nijel\"\u003e\u003ccode\u003e@​nijel\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: r\u003c/code\u003e installation when initiated by RStudio.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3389\"\u003e#3389\u003c/a\u003e PR by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3385\"\u003e#3385\u003c/a\u003e issue by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.0.1 - 2024-10-08\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003epre-commit migrate-config\u003c/code\u003e for unquoted deprecated stages names with\npurelib \u003ccode\u003epyyaml\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/pre-commit/pre-commit/commit/b74a22d96cca546b8e0bb9f68f1d7d8565205b65\"\u003e\u003ccode\u003eb74a22d\u003c/code\u003e\u003c/a\u003e v4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/cc899de192a5f5614633d86178568cc1c46d999d\"\u003e\u003ccode\u003ecc899de\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e from bc-lee/dart-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a0bcea7570620416a550362d9b2d2b24eb80dd8\"\u003e\u003ccode\u003e2a0bcea\u003c/code\u003e\u003c/a\u003e Downgrade Dart SDK version installed in the CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f1cc7a445f1adbfc9ea4072e180fbe3054af669b\"\u003e\u003ccode\u003ef1cc7a4\u003c/code\u003e\u003c/a\u003e Make Dart pre-commit hook compatible with the latest Dart SDKs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/72a3b71f0e7b89b78899739aeee2e962914ab649\"\u003e\u003ccode\u003e72a3b71\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3504\"\u003e#3504\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c8925a457afb1d6850c8f105671846bae408aae0\"\u003e\u003ccode\u003ec8925a4\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5fe6c500c2c7a17aaa21f0bb91ee7ceecf61968\"\u003e\u003ccode\u003ea5fe6c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e from ericphanson/eph/jl-startup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/6f1f433a9cea94a70828ade95931a703c9a9c82b\"\u003e\u003ccode\u003e6f1f433\u003c/code\u003e\u003c/a\u003e Julia language: skip startup.jl file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c6817210b1cdbbfbd1b1ff2148edfa15bf4b3c97\"\u003e\u003ccode\u003ec681721\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3499\"\u003e#3499\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/4fd4537bc69e6804998d99e4851a9dbe43e91757\"\u003e\u003ccode\u003e4fd4537\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v3.5.0...v4.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.9 to 2.12.1\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.1 2025-10-13\u003c/h2\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers 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/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in 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/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using 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/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures 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/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value 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-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag 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/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues 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/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\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.0...v2.12.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.0...v2.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.0 2025-10-07\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch1\u003ev2.12.0 (2025-10-07)\u003c/h1\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nCheck out the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release\"\u003eblog post\u003c/a\u003e for release highlights. Several minor \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003echanges\u003c/a\u003e (considered non-breaking changes according to our \u003ca href=\"https://docs.pydantic.dev/2.12/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\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nThe core functionality of Pydantic V1 is \u003cstrong\u003enot\u003c/strong\u003e compatible with \u003cstrong\u003ePython 3.14\u003c/strong\u003e or greater.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support.\u003c/p\u003e\n\u003cp\u003eChangelog (see the \u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.0a1\"\u003e2.12.0a1\u003c/a\u003e and \u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.0b1\"\u003e2.12.0b1\u003c/a\u003e releases for additional changes since 2.11):\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate V1 copy to v1.10.24 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/12338\"\u003e#12338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eNew Features\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/pydantic/pydantic/blob/v2.12.1/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers 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/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in 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/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using 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/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures 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/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value 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-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag 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/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues 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/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.0 (2025-10-07)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://docs.pydantic.dev/2.12/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\u003e\u003cstrong\u003eNote that Pydantic V1 is not compatible with Python 3.14 and greater\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eChanges (see the alpha and beta releases for additional changes since 2.11):\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate V1 copy to v1.10.24 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/12338\"\u003e#12338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eextra\u003c/code\u003e parameter to the validate functions by \u003ca href=\"https://github.com/anvilpete\"\u003e\u003ccode\u003e@​anvilpete\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12233\"\u003e#12233\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_computed_fields\u003c/code\u003e serialization option 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/12334\"\u003e#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epreverse_empty_path\u003c/code\u003e URL options 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/12336\"\u003e#12336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eunion_format\u003c/code\u003e parameter to JSON Schema generation 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/12147\"\u003e#12147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__qualname__\u003c/code\u003e parameter for \u003ccode\u003ecreate_model\u003c/code\u003e by \u003ca href=\"https://github.com/Atry\"\u003e\u003ccode\u003e@​Atry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12001\"\u003e#12001\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\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/b4076c66773b514d4891f036a4cc562b8ff0ff21\"\u003e\u003ccode\u003eb4076c6\u003c/code\u003e\u003c/a\u003e Prepare release 2.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b67f07291167b4005a6eeee05fcad67b43a53f41\"\u003e\u003ccode\u003eb67f072\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/529f7ddc4a2eac8eb41b39d8b4d6c07997de46f8\"\u003e\u003ccode\u003e529f7dd\u003c/code\u003e\u003c/a\u003e Fix error message for invalid validator signatures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/445fa79f2eda31e2a1922f9736f7613bbd9680b5\"\u003e\u003ccode\u003e445fa79\u003c/code\u003e\u003c/a\u003e Backport V1 runtime warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b3dba9be0705293019c368d8acc5b8b60dcf5148\"\u003e\u003ccode\u003eb3dba9b\u003c/code\u003e\u003c/a\u003e Make sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1e8c41ee1327c153c713f47feb98a5fa7bb8ce89\"\u003e\u003ccode\u003e1e8c41e\u003c/code\u003e\u003c/a\u003e Do not evaluate annotations when inspecting validators and serializers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2a199fe4fc5f8cbc32c93840c9783b332b4f112\"\u003e\u003ccode\u003ee2a199f\u003c/code\u003e\u003c/a\u003e Upgrade dependencies for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/79353e6a6b9fc7a34304d5981b670832044caa99\"\u003e\u003ccode\u003e79353e6\u003c/code\u003e\u003c/a\u003e Fix spelling in \u003ccode\u003emodel_dump()\u003c/code\u003e docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/aa6b6cd206253c24a46a5fb830e2ff029d21fb95\"\u003e\u003ccode\u003eaa6b6cd\u003c/code\u003e\u003c/a\u003e Fix typo in experimental.md documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a7928e692e5a7841c4379d1af1fd37966941dade\"\u003e\u003ccode\u003ea7928e6\u003c/code\u003e\u003c/a\u003e Update Python version in documentation publishing CI job (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12344\"\u003e#12344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.9...v2.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-xdist` from 3.6.1 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst\"\u003epytest-xdist's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epytest-xdist 3.8.0 (2025-06-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1083](https://github.com/pytest-dev/pytest-xdist/issues/1083) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1083\u0026gt;\u003c/code\u003e_: Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e option to control whether to automatically reorder tests in loadscope for tests where relative ordering matters. This only applies when using \u003ccode\u003eloadscope\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor example, [test_file_1, test_file_2, ..., test_file_n] are given as input test files, if \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e is used, for either worker, the \u003ccode\u003etest_file_a\u003c/code\u003e will be executed before \u003ccode\u003etest_file_b\u003c/code\u003e only if \u003ccode\u003ea \u0026lt; b\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default behavior is to reorder the tests to maximize the number of tests that can be executed in parallel.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003epytest-xdist 3.7.0 (2025-05-26)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1142](https://github.com/pytest-dev/pytest-xdist/issues/1142) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1142\u0026gt;\u003c/code\u003e_: Added support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1144](https://github.com/pytest-dev/pytest-xdist/issues/1144) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1144\u0026gt;\u003c/code\u003e_: The internal \u003ccode\u003esteal\u003c/code\u003e command is now atomic - it unschedules either all requested tests or none.\u003c/p\u003e\n\u003cp\u003eThis is a prerequisite for group/scope support in the \u003ccode\u003eworksteal\u003c/code\u003e scheduler, so test groups won't be broken up incorrectly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1170](https://github.com/pytest-dev/pytest-xdist/issues/1170) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1170\u0026gt;\u003c/code\u003e_: Add the \u003ccode\u003e--px\u003c/code\u003e arg to create proxy gateways.\u003c/p\u003e\n\u003cp\u003eProxy gateways are passed to additional gateways using the \u003ccode\u003evia\u003c/code\u003e keyword.\nThey can serve as a way to run multiple workers on remote machines.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1200](https://github.com/pytest-dev/pytest-xdist/issues/1200) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1200\u0026gt;\u003c/code\u003e_: Now multiple \u003ccode\u003exdist_group\u003c/code\u003e markers are considered when assigning tests to groups (order does not matter).\u003c/p\u003e\n\u003cp\u003ePreviously, only the last marker would assign a test to a group, but now if a test has multiple \u003ccode\u003exdist_group\u003c/code\u003e marks applied (for example via parametrization or via fixtures), they are merged to make a new group.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#1162](https://github.com/pytest-dev/pytest-xdist/issues/1162) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1162\u0026gt;\u003c/code\u003e_: Dropped support for EOL Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTrivial Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1092](https://github.com/pytest-dev/pytest-xdist/issues/1092) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1092\u0026gt;\u003c/code\u003e_: Update an error message to better indicate where users should go for more information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1190](https://github.com/pytest-dev/pytest-xdist/issues/1190) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1190\u0026gt;\u003c/code\u003e_: Switched to using a SPDX license identifier introduced in PEP 639.\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-xdist/commit/1e3e4dc16523c8a8f6c67d95a950166420718c99\"\u003e\u003ccode\u003e1e3e4dc\u003c/code\u003e\u003c/a\u003e Release 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/600aad575a4e4382855145b0c464d51b8f0b7242\"\u003e\u003ccode\u003e600aad5\u003c/code\u003e\u003c/a\u003e Ensure all xdist group names are strings (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1216\"\u003e#1216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/9d7ba5b5fbbbe26793fbfb7cb1903eb69425cf09\"\u003e\u003ccode\u003e9d7ba5b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/532f07fb181bb1546eda79bbe6b46bdb56c699e1\"\u003e\u003ccode\u003e532f07f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1210\"\u003e#1210\u003c/a\u003e from pytest-dev/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/0883ad085e0cf039c8ae13eb2789c1076544d225\"\u003e\u003ccode\u003e0883ad0\u003c/code\u003e\u003c/a\u003e Fix Path usage in \u003ccode\u003etest_rsync_roots_no_roots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/58a51bc14015d211761e44c2bdacab09c3893668\"\u003e\u003ccode\u003e58a51bc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/59a2ad0150697b9ff837f3ae8dcf6e074d5a114b\"\u003e\u003ccode\u003e59a2ad0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1220\"\u003e#1220\u003c/a\u003e from pytest-dev/dependabot/github_actions/github-act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/d42b9c72044855236c68286ca3bdb34486a05872\"\u003e\u003ccode\u003ed42b9c7\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/ebfcb99072aed3503fda5175245f28895a0204bb\"\u003e\u003ccode\u003eebfcb99\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1206\"\u003e#1206\u003c/a\u003e from pytest-dev/release-3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/23b7fd6054298a530b02b33d07007b3082a36277\"\u003e\u003ccode\u003e23b7fd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.8.0\"\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.25 to 1.2.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.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 ...\n\n_Description has been truncated_","html_url":"https://github.com/awslabs/LISA/pull/504","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/504","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/504/packages"},{"uuid":"3489096185","node_id":"PR_kwDOHUSeqs6sXqmE","number":435,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T21:04:45.000Z","updated_at":"2025-10-06T23:17:40.770Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":19,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.24","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.1","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.3.3","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.24` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.1` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.3` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.3.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\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/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.24\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\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.24/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.1\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.1] - 2025-10-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/ecb00fe74a09c93d49bef0cbd86f600f066494e9\"\u003e\u003ccode\u003eecb00fe\u003c/code\u003e\u003c/a\u003e update uv lockfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/4e96a4369dcf89a895af95898ea92cc4bcacfe78\"\u003e\u003ccode\u003e4e96a43\u003c/code\u003e\u003c/a\u003e version changes for v6.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a0de8c9bdfcf7a2c2462087a585b7e762ca21c51\"\u003e\u003ccode\u003ea0de8c9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5361\"\u003e#5361\u003c/a\u003e from plotly/matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/832b46c77da10c203348a953f04e4c047ec083ef\"\u003e\u003ccode\u003e832b46c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/b258862b0f41ac12e087a65b4370c1675b956dc6\"\u003e\u003ccode\u003eb258862\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5180\"\u003e#5180\u003c/a\u003e from gmjw/secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/2c5e2b61873a8cf92ed8473b98801ab099878dda\"\u003e\u003ccode\u003e2c5e2b6\u003c/code\u003e\u003c/a\u003e fix matplotlib import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/610b7ee6bebf47d6f902f0393f2ca75557a7683e\"\u003e\u003ccode\u003e610b7ee\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/fbbc9d68f9987afaeb7abce9f550b6f0ed660513\"\u003e\u003ccode\u003efbbc9d6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5322\"\u003e#5322\u003c/a\u003e from mgorny/plt-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/d2af541c362c16a4ca6525322149940e88b03ccd\"\u003e\u003ccode\u003ed2af541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5258\"\u003e#5258\u003c/a\u003e from plotly/fix-default-renderer-when-ipython-installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/ead0c767797879fb978743377b67541be98ea8f1\"\u003e\u003ccode\u003eead0c76\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into plt-import\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 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.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"ht...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/435","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/435","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/435/packages"},{"uuid":"2857107225","node_id":"PR_kwDOP2Ew5c6qS_8Z","number":9,"state":"open","title":"build(deps): bump opensearch-py from 2.8.0 to 3.0.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-24T14:04:26.000Z","updated_at":"2025-09-24T14:04:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 2.8.0 to 3.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=2.8.0\u0026new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/jsol444455/Mod_OpenWebUI/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsol444455%2FMod_OpenWebUI/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"},{"uuid":"3442773217","node_id":"PR_kwDOHUSeqs6p8Ooe","number":434,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T21:06:13.000Z","updated_at":"2025-09-22T22:23:45.823Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":17,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.23","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.2","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.23` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.0` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.2` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\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/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.23\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\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.23/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/53572f6532876fde279abfa63a47c056dc485540\"\u003e\u003ccode\u003e53572f6\u003c/code\u003e\u003c/a\u003e Update uv lock file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/3b5a65f1431eb2b17957af05b41ebc031d894d68\"\u003e\u003ccode\u003e3b5a65f\u003c/code\u003e\u003c/a\u003e version changes for v6.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/6b7565b594a0640f4181f4d1a027c1235f8eff7c\"\u003e\u003ccode\u003e6b7565b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5318\"\u003e#5318\u003c/a\u003e from plotly/update-plotlyjs-3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c2225b79f337bb4ae42268d50fb2d77c1ccd684f\"\u003e\u003ccode\u003ec2225b7\u003c/code\u003e\u003c/a\u003e add DeprecationWarning for upcoming change in locationmode 'country names'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/deef7a3345e42374ef16d181beb3922d38631343\"\u003e\u003ccode\u003edeef7a3\u003c/code\u003e\u003c/a\u003e update plotly/labextension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/0589b229076c3c75ad40fa3875f276e1e5e7dfe8\"\u003e\u003ccode\u003e0589b22\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/694b0366419228b05b67ee6f34ee2d1c53734360\"\u003e\u003ccode\u003e694b036\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5308\"\u003e#5308\u003c/a\u003e from plotly/update-doc-string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/480a1aff40c631fdd34df16e50beb75debdce60b\"\u003e\u003ccode\u003e480a1af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5287\"\u003e#5287\u003c/a\u003e from jdbeel/update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c07de25a169eb36bc895755be1cfcb79fcada21f\"\u003e\u003ccode\u003ec07de25\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/9f4b774e783c9eea70fcc9631a18d107ea3fe845\"\u003e\u003ccode\u003e9f4b774\u003c/code\u003e\u003c/a\u003e Update _json.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.2\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.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.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/4665c10899bc413b639194f6fb8665a5c70f7db5\"\u003e\u003ccode\u003e4665c10\u003c/code\u003e\u003c/a\u003e RLS: 2.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/633c68b91808441eba7d73b630a82b713ba19da8\"\u003e\u003ccode\u003e633c68b\u003c/code\u003e\u003c/a\u003e DOC: fix syntax in whatsnew file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/456ad4702cb017aab36e2d09a4029b1b085198f5\"\u003e\u003ccode\u003e456ad47\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62152\"\u003e#62152\u003c/a\u003e on branch 2.3.x (DOC: prepare 2.3.2 whatsnew notes for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6cae6444444ed7943ceffbd5990cd8249dd5b47c\"\u003e\u003ccode\u003e6cae644\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: move and reword whatsnew note for replace fix (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/57865\"\u003eGH-57865\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/a91c50a58c372cddf104fd60241c7284bbf8fc80\"\u003e\u003ccode\u003ea91c50a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62147\"\u003e#62147\u003c/a\u003e on branch 2.3.x (DOC: correct and rewrite string migration...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f7a2cfdf2ed08016167ae6c5e577c54949a849b2\"\u003e\u003ccode\u003ef7a2cfd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG/DEPR: logical operation with bool and string (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/61995\"\u003e#61995\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/7981a43db4339826a3ce5020e9b1b931e604e5bd\"\u003e\u003ccode\u003e7981a43\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62124\"\u003e#62124\u003c/a\u003e on branch 2.3.x (CI/BLD: don't use strict xfail for '%m.%Y...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/fafbcbd03d1721830f4df8255abdab341db2a583\"\u003e\u003ccode\u003efafbcbd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG(CoW): also raise for chained assignment for .at / .iat (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3ac64a714886d917ca24ba637a85c4aaf563fc1b\"\u003e\u003ccode\u003e3ac64a7\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: Fix Series.str.contains with compiled regex on Arrow st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/1f2dc4fd8a2503773b6f90cb5e8cc5c3172c3c11\"\u003e\u003ccode\u003e1f2dc4f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix Series.str.fullmatch() and Series.str.match() with ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.3.0...v2.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.26.0 to 4.30.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.30.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3603\"\u003etox-dev/tox#3603\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure automatically provisioned environment is torn down by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3601\"\u003etox-dev/tox#3601\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3604\"\u003etox-dev/tox#3604\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.1...4.30.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.30.1...4.30.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.30.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Tox from hanging with \u003ccode\u003e--installpkg\u003c/code\u003e sdist due to orphaned build backend by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\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/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.0...4.30.1...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/434","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/434","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/434/packages"}],"issue_packages":[{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":null,"pr_created_at":"2026-05-04T19:22:43.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"4379043931","node_id":"PR_kwDOL8h0as7YIo8-","number":1546,"state":"closed","title":"Chore(deps): Bump the cosmetology-python-minor-patch group across 8 directories with 10 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T01:54:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-04T19:22:43.000Z","updated_at":"2026-05-11T01:54:25.000Z","time_to_close":541900,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"cosmetology-python-minor-patch","update_count":10,"packages":[{"name":"faker","old_version":"40.13.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"boto3","old_version":"1.42.89","new_version":"1.42.96","repository_url":"https://github.com/boto/boto3"},{"name":"statsig-python-core","old_version":"0.19.1","new_version":"0.19.3","repository_url":"https://github.com/statsig-io/statsig-server-core"},{"name":"boto3-stubs","old_version":"1.42.90","new_version":"1.42.96","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the cosmetology-python-minor-patch group with 4 updates in the /backend/cosmetology-app directory: [aws-cdk-aws-lambda-python-alpha](https://github.com/aws/aws-cdk), [cdk-nag](https://github.com/cdklabs/cdk-nag), [faker](https://github.com/joke2k/faker) and [ruff](https://github.com/astral-sh/ruff).\nBumps the cosmetology-python-minor-patch group with 5 updates in the /backend/cosmetology-app/lambdas/python directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.15.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.89` | `1.42.96` |\n| [statsig-python-core](https://github.com/statsig-io/statsig-server-core) | `0.19.1` | `0.19.3` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.90` | `1.42.96` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `3.1.0` | `3.2.0` |\n\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/cognito-backup directory: [boto3](https://github.com/boto/boto3).\nBumps the cosmetology-python-minor-patch group with 3 updates in the /backend/cosmetology-app/lambdas/python/common directory: [faker](https://github.com/joke2k/faker), [boto3](https://github.com/boto/boto3) and [boto3-stubs](https://github.com/youtype/mypy_boto3_builder).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/feature-flag directory: [statsig-python-core](https://github.com/statsig-io/statsig-server-core).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/provider-data-v1 directory: [faker](https://github.com/joke2k/faker).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/search directory: [opensearch-py](https://github.com/opensearch-project/opensearch-py).\nBumps the cosmetology-python-minor-patch group with 1 update in the /backend/cosmetology-app/lambdas/python/staff-users directory: [faker](https://github.com/joke2k/faker).\n\nUpdates `aws-cdk-aws-lambda-python-alpha` from 2.250.0a0 to 2.251.0a0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-cdk/releases\"\u003eaws-cdk-aws-lambda-python-alpha's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.250.0\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e** L1 resources are automatically generated from public CloudFormation Resource Schemas. They are built to closely reflect the real state of CloudFormation. Sometimes these updates can contain changes that are incompatible with previous types, but more accurately reflect reality. In this release we have changed:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eaws-emr: AWS::EMR::Cluster: MonitoringConfiguration property removed.\naws-emr: AWS::EMR::Cluster: CloudWatchLogConfiguration type removed.\naws-emr: AWS::EMR::Cluster: EMRConfiguration type removed.\naws-emr: AWS::EMR::Cluster: MonitoringConfiguration type removed.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003es3files:\u003c/strong\u003e s3Files Lambda L1 integration (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37547\"\u003e#37547\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/af41262a657e9533abcf07c98d0d2c4fad5e35f0\"\u003eaf41262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate L1 CloudFormation resource definitions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37582\"\u003e#37582\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/c99ce64b7715f7bd40b09e08ecf5b05666a5f525\"\u003ec99ce64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emediapackagev2:\u003c/strong\u003e add region attribute on mediapackagev2 resources and extra naming validation (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37526\"\u003e#37526\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/112ed67da18a43019a17f330ec6db399cd7d64d0\"\u003e112ed67\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeks-v2:\u003c/strong\u003e respect securityGroup(s) in KubectlProviderOptions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37247\"\u003e#37247\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/4c530fa49bbf4b1956f7ebf92b7b517ff668dfdb\"\u003e4c530fa\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36653\"\u003e#36653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elambda-nodejs:\u003c/strong\u003e if entry path is not under project root, bundling in Docker fails in an unclear way (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37572\"\u003e#37572\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/73662dfdece2e9bacf0afcd8f40ae07b48ed7891\"\u003e73662df\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eAlpha modules (2.250.0-alpha.0)\u003c/h2\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/aws/aws-cdk/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aws-cdk-lib` from 2.250.0 to 2.252.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-cdk/releases\"\u003eaws-cdk-lib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.252.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e \u003ccode\u003eValidations\u003c/code\u003e class now supports \u003ccode\u003eaddWarning\u003c/code\u003e, \u003ccode\u003eaddError\u003c/code\u003e, and \u003ccode\u003eacknowledge\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37668\"\u003e#37668\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/5e8083c79f2657fe2364a31ed3f26d0d88638920\"\u003e5e8083c\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk-rfcs/issues/899\"\u003eaws/aws-cdk-rfcs#899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e add Box API for deferred values with accurate stack traces (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37604\"\u003e#37604\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/d592a969caf30c2f62df99c9a269722ae528cd65\"\u003ed592a96\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eaws-cdk-lib:\u003c/strong\u003e cannot be used as a \u003ccode\u003ebundledDependency\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37726\"\u003e#37726\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/6ba0598d0b1a099db9c74723ac2567cc947ad802\"\u003e6ba0598\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37717\"\u003e#37717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003es3:\u003c/strong\u003e resolve S3 notification removal race condition (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37708\"\u003e#37708\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/dc5be981a9568a4bb60e47ec9106696650f0bfc8\"\u003edc5be98\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37667\"\u003e#37667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eAlpha modules (2.252.0-alpha.0)\u003c/h2\u003e\n\u003ch2\u003ev2.251.0\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e** L1 resources are automatically generated from public CloudFormation Resource Schemas. They are built to closely reflect the real state of CloudFormation. Sometimes these updates can contain changes that are incompatible with previous types, but more accurately reflect reality. In this release we have changed:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eaws-elasticloadbalancing: AWS::ElasticLoadBalancing::LoadBalancer: SourceSecurityGroup attribute removed.\naws-elasticloadbalancing: AWS::ElasticLoadBalancing::LoadBalancer: PolicyItem type removed.\naws-elasticloadbalancing: AWS::ElasticLoadBalancing::LoadBalancer: SourceSecurityGroup type removed.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate L1 CloudFormation resource definitions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37684\"\u003e#37684\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/9e6c2efc42b72115414b5874cc77900de4ba13a5\"\u003e9e6c2ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elambda:\u003c/strong\u003e add ruby 4.0 runtime (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37650\"\u003e#37650\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/04d4337b1d104d9f32e76109675f968da082781c\"\u003e04d4337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate L1 CloudFormation resource definitions (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37644\"\u003e#37644\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/e64f943fec033f404a4830133aa916ebaf0cc2aa\"\u003ee64f943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e \u003ccode\u003eValidations\u003c/code\u003e class is the new way to add validation plugins to CDK Apps (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37611\"\u003e#37611\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/95696b463de0df91fb8d50b15add5200ac6818c1\"\u003e95696b4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37613\"\u003e#37613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e graduate \u003ccode\u003epolicyValidationBeta1\u003c/code\u003e interfaces to \u003ccode\u003epolicyValidation\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37613\"\u003e#37613\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/8c613cf291eda9920165585bda06c55ef28667bc\"\u003e8c613cf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eecs:\u003c/strong\u003e support for service connect access log configuration (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36067\"\u003e#36067\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/5ad1c06e196b9f3bfec2bc79c9d7aa85af366ee0\"\u003e5ad1c06\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eroute53:\u003c/strong\u003e accelerated recovery for public hosted zone (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36358\"\u003e#36358\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/f1b7b03e3f65253fed5d934fc2f1d1ea08e3e2fc\"\u003ef1b7b03\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esynthetics:\u003c/strong\u003e support canary group  (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/35689\"\u003e#35689\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/20ccd310789828854b85faadb603466ac405e695\"\u003e20ccd31\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/34043\"\u003e#34043\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e \u003ccode\u003eStage.policyValidationBeta1\u003c/code\u003e is mutable (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37612\"\u003e#37612\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/3c1faf13b325587971a461d1837734b09c92909d\"\u003e3c1faf1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e construct creation stack traces are implicit (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37643\"\u003e#37643\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/5635c208a465772bacb9ea087af98e4e668b9125\"\u003e5635c20\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e synth output is not valid YAML when using policy validation (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37597\"\u003e#37597\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/927dd60d6bdab7a57a5b14bd8f0e7df6fe7cfdce\"\u003e927dd60\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/25331\"\u003e#25331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e token stack traces expensively clutter --debug mode (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37642\"\u003e#37642\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/498c5469f8f132103e16fdb89bd5cf17b1f84dbd\"\u003e498c546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e tree metadata does not contain logical ID (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37630\"\u003e#37630\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/284ab2367e8fe891fdf4cb2d5a193a695fc1bc49\"\u003e284ab23\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eec2:\u003c/strong\u003e fixing vpc endpoint for eu-isoe-west-1 region (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37596\"\u003e#37596\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/555c930e3d3eb7248fc695c853ce50c06cd246bd\"\u003e555c930\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/31690\"\u003e#31690\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eevents-targets:\u003c/strong\u003e make LogGroupTargetInput extend RuleTargetInput for JSII compatibility (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37451\"\u003e#37451\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/46dbc7abc92ceb84e5271698f5281941d8324769\"\u003e46dbc7a\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36733\"\u003e#36733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elambda:\u003c/strong\u003e add \u003ccode\u003eToken.isUnresolved\u003c/code\u003e checks to provisioned poller config validation (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37197\"\u003e#37197\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/667ed3019a02564c88fa2b8f7fe56bd46b760c67\"\u003e667ed30\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estepfunctions-tasks:\u003c/strong\u003e warn when CallAwsServiceCrossRegion endpoint is resolved from state input (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37646\"\u003e#37646\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/9fdf5907b12713b62190de4f5ad7c79b97b3a7a4\"\u003e9fdf590\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eAlpha modules (2.251.0-alpha.0)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-cdk/blob/main/CHANGELOG.v2.alpha.md\"\u003eaws-cdk-lib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file. See \u003ca href=\"https://github.com/conventional-changelog/standard-version\"\u003estandard-version\u003c/a\u003e for commit guidelines.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.251.0-alpha.0...v2.252.0-alpha.0\"\u003e2.252.0-alpha.0\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.250.0-alpha.0...v2.251.0-alpha.0\"\u003e2.251.0-alpha.0\u003c/a\u003e (2026-04-24)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebedrock-agentcore-alpha:\u003c/strong\u003e add L2 constructs for policy and policy engine  (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37238\"\u003e#37238\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/1e89e7e921a9946cb9c23f967c6b7a33a6048de4\"\u003e1e89e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebedrock-agentcore-alpha:\u003c/strong\u003e add observability configuration for Runtime (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36689\"\u003e#36689\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/34b43aabe2c3a946ba286812b402ce946222d820\"\u003e34b43aa\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36596\"\u003e#36596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebedrock-agentcore-alpha:\u003c/strong\u003e support No Authorization for AgentCore Gateway (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36610\"\u003e#36610\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/f20bd8e43700877f7166cdac3cd994876963bc67\"\u003ef20bd8e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edsql-alpha:\u003c/strong\u003e initial L2 construct (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/34599\"\u003e#34599\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/be1a45861a5138b6e397cf076e39dfe0a18d4e99\"\u003ebe1a458\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/34593\"\u003e#34593\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.249.0-alpha.0...v2.250.0-alpha.0\"\u003e2.250.0-alpha.0\u003c/a\u003e (2026-04-14)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.248.0-alpha.0...v2.249.0-alpha.0\"\u003e2.249.0-alpha.0\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.247.0-alpha.0...v2.248.0-alpha.0\"\u003e2.248.0-alpha.0\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.246.0-alpha.0...v2.247.0-alpha.0\"\u003e2.247.0-alpha.0\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003emediapackagev2-alpha:\u003c/strong\u003e new L2 construct (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37279\"\u003e#37279\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/7debfb9c5e807fac5df6e9e0ea3097d72325ffbc\"\u003e7debfb9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.245.0-alpha.0...v2.246.0-alpha.0\"\u003e2.246.0-alpha.0\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.244.0-alpha.0...v2.245.0-alpha.0\"\u003e2.245.0-alpha.0\u003c/a\u003e (2026-03-27)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003es3tables-alpha:\u003c/strong\u003e add support for partition spec, sort order, and table properties (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/36811\"\u003e#36811\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/2696cd16e8e2edc8d40f1443b9c87eb6171e5d1f\"\u003e2696cd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003es3tables-alpha:\u003c/strong\u003e add metrics configuration support for TableBucket (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37275\"\u003e#37275\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/e8786f5d782d906971f933a2d6d432309d5384d7\"\u003ee8786f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003es3tables-alpha:\u003c/strong\u003e implement ITaggableV2 on TableBucket and Table L2 constructs (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37277\"\u003e#37277\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/69c8944ea3f4abf0f4218af2fc42c8e862e8cad3\"\u003e69c8944\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/33054\"\u003e#33054\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.243.0-alpha.0...v2.244.0-alpha.0\"\u003e2.244.0-alpha.0\u003c/a\u003e (2026-03-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekinesisanalytics-flink-alpha:\u003c/strong\u003e mark deprecated flink runtimes as deprecated (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37155\"\u003e#37155\u003c/a\u003e) (\u003ca href=\"https://github.com/aws/aws-cdk/commit/0a894472650bb1a2c41050ae2b00581fb937c924\"\u003e0a89447\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.242.0-alpha.0...v2.243.0-alpha.0\"\u003e2.243.0-alpha.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.241.0-alpha.0...v2.242.0-alpha.0\"\u003e2.242.0-alpha.0\u003c/a\u003e (2026-03-10)\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/aws/aws-cdk/commit/a58510c0c3fc909a7173f962135f455d0c4673c0\"\u003e\u003ccode\u003ea58510c\u003c/code\u003e\u003c/a\u003e chore(release): 2.252.0 (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37727\"\u003e#37727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/9e000ffec4711a63263da700f0089157e7884a9e\"\u003e\u003ccode\u003e9e000ff\u003c/code\u003e\u003c/a\u003e chore: trigger build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/323844a044c5e13968a46289ac353ee878d0d064\"\u003e\u003ccode\u003e323844a\u003c/code\u003e\u003c/a\u003e chore: update analytics metadata blueprints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/9f70a52f8803da5141e78bce60ca041143a85bb2\"\u003e\u003ccode\u003e9f70a52\u003c/code\u003e\u003c/a\u003e chore(release): 2.252.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/6ba0598d0b1a099db9c74723ac2567cc947ad802\"\u003e\u003ccode\u003e6ba0598\u003c/code\u003e\u003c/a\u003e fix(aws-cdk-lib): cannot be used as a \u003ccode\u003ebundledDependency\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37726\"\u003e#37726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/d592a969caf30c2f62df99c9a269722ae528cd65\"\u003e\u003ccode\u003ed592a96\u003c/code\u003e\u003c/a\u003e feat(core): add Box API for deferred values with accurate stack traces (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37604\"\u003e#37604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/0616322e5f3ddc5d78e0ed9093ed2fe1dd8133a1\"\u003e\u003ccode\u003e0616322\u003c/code\u003e\u003c/a\u003e refactor(lambda-nodejs): unify code paths between local \u0026amp; Docker bundling (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/dc5be981a9568a4bb60e47ec9106696650f0bfc8\"\u003e\u003ccode\u003edc5be98\u003c/code\u003e\u003c/a\u003e fix(s3): resolve S3 notification removal race condition (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37708\"\u003e#37708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/a78ddc5017befd39b4f531601889254496272df1\"\u003e\u003ccode\u003ea78ddc5\u003c/code\u003e\u003c/a\u003e chore(ci): fix pr-issue-check unable to comment on PRs from forks (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37703\"\u003e#37703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cdk/commit/556f8d3aa06da2ff55d613526e65a6a2564a9c43\"\u003e\u003ccode\u003e556f8d3\u003c/code\u003e\u003c/a\u003e chore(core): migrate off of \u003ccode\u003eBeta1\u003c/code\u003e properties internally (\u003ca href=\"https://redirect.github.com/aws/aws-cdk/issues/37711\"\u003e#37711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cdk/compare/v2.250.0...v2.252.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cdk-nag` from 2.37.55 to 2.38.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cdklabs/cdk-nag/releases\"\u003ecdk-nag's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.38.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.38.1...v2.38.2\"\u003e2.38.2\u003c/a\u003e (2026-04-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eprefix using Stage Construct ID to avoid StageName colissions (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2338\"\u003e#2338\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/c0d76f6405747ab40fe486a34f8f9020949d36b6\"\u003ec0d76f6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.38.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.38.0...v2.38.1\"\u003e2.38.1\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove unnecessary test for \u003ccode\u003eserverSideEncryptionConfiguration\u003c/code\u003e to not be undefined (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2227\"\u003e#2227\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/9436814b8824578428d8cf86cdf66ac4498f6b24\"\u003e9436814\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2226\"\u003e#2226\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.38.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.37.56...v2.38.0\"\u003e2.38.0\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd rule MWAAAllLoggingInfo (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2239\"\u003e#2239\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/03ad81aed2cc5c909fa8c6285f516e03ce57bb38\"\u003e03ad81a\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2238\"\u003e#2238\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.37.56\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.37.55...v2.37.56\"\u003e2.37.56\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPIGWStructuredLogging:\u003c/strong\u003e no stage description for CfnDeployment throws an error (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2268\"\u003e#2268\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/ac6dcd3e2dfedafd91c59b80731589678a3ccaae\"\u003eac6dcd3\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2267\"\u003e#2267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCognito user pool advanced security mode (deprecated) updated to plus tier (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2155\"\u003e#2155\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/5a8b71d3fdf1a59301b8caa9cdcb4bed603b7cb1\"\u003e5a8b71d\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2139\"\u003e#2139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprefix report filename with stage name to prevent collisions (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2302\"\u003e#2302\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/54e6425baabcbf8783061d67cf35611f9eb1e425\"\u003e54e6425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erelease:\u003c/strong\u003e use 'release' GitHub environment for publish jobs (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/9b66acdafac1b8d096c260b517e5af2aa5bee0f1\"\u003e9b66acd\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/cdklabs/cdk-nag/commit/c0d76f6405747ab40fe486a34f8f9020949d36b6\"\u003e\u003ccode\u003ec0d76f6\u003c/code\u003e\u003c/a\u003e fix: prefix using Stage Construct ID to avoid StageName colissions (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2338\"\u003e#2338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/0d52df52c0db57aa33f5b90c38f34c9bbafbf815\"\u003e\u003ccode\u003e0d52df5\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in elasticbeanstalk rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2210\"\u003e#2210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/4511bc03852ab9b0c83cd195fd1091125f32088d\"\u003e\u003ccode\u003e4511bc0\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in apigw rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2190\"\u003e#2190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/b684354b7617086392081005c582725df749e77c\"\u003e\u003ccode\u003eb684354\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in codebuild rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2196\"\u003e#2196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/e4dc7d9b51bec1dfacda04164f7a666b41de4772\"\u003e\u003ccode\u003ee4dc7d9\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in ecs rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2206\"\u003e#2206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/c6f2d4f3c272fab6a7c4d90fd07be64b90bbf16a\"\u003e\u003ccode\u003ec6f2d4f\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in ec2 rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2202\"\u003e#2202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/07e625883844660e67a9cc5a9852a10341f8bfdf\"\u003e\u003ccode\u003e07e6258\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in elasticache rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2208\"\u003e#2208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/e5d11b1dc28ebeeab1deef6dbce70c5536ac0fd0\"\u003e\u003ccode\u003ee5d11b1\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in ecr rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2204\"\u003e#2204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/839646927482c4483760901bd526c58dcb52e815\"\u003e\u003ccode\u003e8396469\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in cloudwatch rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2194\"\u003e#2194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cdklabs/cdk-nag/commit/51dd22802b6be8579f3f0fd8d52e274afc78fd9f\"\u003e\u003ccode\u003e51dd228\u003c/code\u003e\u003c/a\u003e chore: add tests for uncovered branches in cognito rules (\u003ca href=\"https://redirect.github.com/cdklabs/cdk-nag/issues/2198\"\u003e#2198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cdklabs/cdk-nag/compare/v2.37.55...v2.38.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.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.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\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/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\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/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\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/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\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.12/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.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\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/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\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/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\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/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\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/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\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/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add da...\n\n_Description has been truncated_","html_url":"https://github.com/csg-org/CompactConnect/pull/1546","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/csg-org%2FCompactConnect/issues/1546","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1546/packages"}},{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":null,"pr_created_at":"2026-05-03T20:39:57.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"4372916067","node_id":"PR_kwDORzxjSM7X0rft","number":67,"state":"closed","title":"chore(deps-dev): bump the vdb group across 1 directory with 18 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-10T20:39:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-03T20:39:57.000Z","updated_at":"2026-05-10T20:39:22.000Z","time_to_close":604764,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"vdb","update_count":18,"packages":[{"name":"weaviate-client","old_version":"4.20.4","new_version":"4.21.0","repository_url":"https://github.com/weaviate/weaviate-python-client"},{"name":"alibabacloud-gpdb20160503","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/aliyun/alibabacloud-python-sdk"},{"name":"alibabacloud-tea-openapi","old_version":"0.4.3","new_version":"0.4.4","repository_url":"https://github.com/aliyun/darabonba-openapi"},{"name":"chromadb","old_version":"0.5.20","new_version":"1.5.8","repository_url":"https://github.com/chroma-core/chroma"},{"name":"clickhouse-connect","old_version":"0.14.1","new_version":"0.15.1","repository_url":"https://github.com/ClickHouse/clickhouse-connect"},{"name":"couchbase","old_version":"4.5.0","new_version":"4.6.1","repository_url":"https://github.com/couchbase/couchbase-python-client"},{"name":"elasticsearch","old_version":"8.14.0","new_version":"9.3.0","repository_url":"https://github.com/elastic/elasticsearch-py"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pymilvus","old_version":"2.6.10","new_version":"2.6.12","repository_url":"https://github.com/milvus-io/pymilvus"},{"name":"pymochow","old_version":"2.3.6","new_version":"2.4.0"},{"name":"pyobvector","old_version":"0.2.25","new_version":"0.2.26","repository_url":"https://github.com/oceanbase/pyobvector"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [weaviate-client](https://github.com/weaviate/weaviate-python-client), [alibabacloud-gpdb20160503](https://github.com/aliyun/alibabacloud-python-sdk), [alibabacloud-tea-openapi](https://github.com/aliyun/darabonba-openapi), [chromadb](https://github.com/chroma-core/chroma), [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect), [couchbase](https://github.com/couchbase/couchbase-python-client), [elasticsearch](https://github.com/elastic/elasticsearch-py), [opensearch-py](https://github.com/opensearch-project/opensearch-py), [pgvecto-rs[sqlalchemy]](https://github.com/tensorchord/pgvecto.rs), [pymilvus](https://github.com/milvus-io/pymilvus), [pymochow](http://bce.baidu.com), [pyobvector](https://github.com/oceanbase/pyobvector), [qdrant-client](https://github.com/qdrant/qdrant-client), [intersystems-irispython](https://www.intersystems.com/), [tablestore](https://github.com/aliyun/aliyun-tablestore-python-sdk), tcvectordb, [xinference-client](https://github.com/xorbitsai/inference-client) and [mysql-connector-python](https://github.com/mysql/mysql-connector-python) to permit the latest version.\nUpdates `weaviate-client` from 4.20.4 to 4.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weaviate/weaviate-python-client/releases\"\u003eweaviate-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003e1.37\u003c/code\u003e features by \u003ca href=\"https://github.com/tsmith023\"\u003e\u003ccode\u003e@​tsmith023\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1988\"\u003eweaviate/weaviate-python-client#1988\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.20.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Object TTL schema export to match server json by \u003ca href=\"https://github.com/dudanogueira\"\u003e\u003ccode\u003e@​dudanogueira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1958\"\u003eweaviate/weaviate-python-client#1958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for audio modality in multi2vec-google vectorizer config by \u003ca href=\"https://github.com/antas-marcin\"\u003e\u003ccode\u003e@​antas-marcin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1983\"\u003eweaviate/weaviate-python-client#1983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: export FilterReturn from weaviate.classes.query by \u003ca href=\"https://github.com/renaudcepre\"\u003e\u003ccode\u003e@​renaudcepre\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1993\"\u003eweaviate/weaviate-python-client#1993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: parse asyncConfig from replication config GET response by \u003ca href=\"https://github.com/jfrancoa\"\u003e\u003ccode\u003e@​jfrancoa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1996\"\u003eweaviate/weaviate-python-client#1996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: throw specific exception on empty list filters for time filters by \u003ca href=\"https://github.com/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(deps): remove unmaintained deprecation package, use stdlib instead by \u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse get() instead of direct dict access by \u003ca href=\"https://github.com/DanielJanicek\"\u003e\u003ccode\u003e@​DanielJanicek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1995\"\u003eweaviate/weaviate-python-client#1995\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/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\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/weaviate/weaviate-python-client/blob/main/docs/changelog.rst\"\u003eweaviate-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.21.0\u003c/h2\u003e\n\u003cp\u003eThis minor version includes:\n- Support for new 1.37 features:\n- Add support for the new \u003ccode\u003eblobHash\u003c/code\u003e property data type\n- Add support for returning profiling when making queries with the \u003ccode\u003ereturn_metadata=[\u0026quot;query_profile\u0026quot;]\u003c/code\u003e parameter\n- Add support for on-demaned tokenization through the \u003ccode\u003eclient.tokenize\u003c/code\u003e namespace\n- Add support for managing permissions for accessing the native MCP server\n- Add support for collection export\n- Add support for incremental backups\n- Minor bug fixes and improvements:\n- Change \u003ccode\u003ealpha\u003c/code\u003e queries and aggregations to use server-side default parameter\n- Fixes rare flakey behaviour of \u003ccode\u003eclient.batch.stream\u003c/code\u003e on server hangup\u003c/p\u003e\n\u003ch2\u003eVersion 4.20.5\u003c/h2\u003e\n\u003cp\u003eThis patch version includes:\n- Fix objectTTL config export\n- Add support for audio modality in multi2vec-google\n- Export FilterReturn from weaviate.classes.query\n- Fix updating async replication config\n- Remove unmaintained \u003ccode\u003edeprecated\u003c/code\u003e dependency\n- Throw exception on empty time filters\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/weaviate/weaviate-python-client/commit/592bc7a2805885a92c8379c3cb8162bcc6702741\"\u003e\u003ccode\u003e592bc7a\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003e1.37\u003c/code\u003e features (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/1988\"\u003e#1988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/6dce1053e148afd014e04baac6b8915e73d0211d\"\u003e\u003ccode\u003e6dce105\u003c/code\u003e\u003c/a\u003e Improve flakiness of SSB tests (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2015\"\u003e#2015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/5a32208a724a6496a146dd27d8642b9ed7a00670\"\u003e\u003ccode\u003e5a32208\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2013\"\u003e#2013\u003c/a\u003e from weaviate/fix_flaky_user_test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/feb4e4c99ce3af000cc1c7f24187640d426a301c\"\u003e\u003ccode\u003efeb4e4c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2009\"\u003e#2009\u003c/a\u003e from weaviate/dependabot/pip/pytest-9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/f2cf9658f635c8a914c2fdbf5d9659c9945ef6ea\"\u003e\u003ccode\u003ef2cf965\u003c/code\u003e\u003c/a\u003e Better variable names\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/a3a7208f725573403a9ecba6399845634b8926f4\"\u003e\u003ccode\u003ea3a7208\u003c/code\u003e\u003c/a\u003e Replace random number with unique and deterministic name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/93fff165025a2dc354687fac51ff8b52554f38a7\"\u003e\u003ccode\u003e93fff16\u003c/code\u003e\u003c/a\u003e build(deps): bump pytest from 9.0.2 to 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/4d66220f37faa5089334d98538a61b0ced709b00\"\u003e\u003ccode\u003e4d66220\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2007\"\u003e#2007\u003c/a\u003e from weaviate/changelog_4_20_5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/78fa5f7f08ea50b2a1041eecd2d010f81885922f\"\u003e\u003ccode\u003e78fa5f7\u003c/code\u003e\u003c/a\u003e Update docs/changelog.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/2af1289def1346ce6e21f1bc05d9966e42a7bf5e\"\u003e\u003ccode\u003e2af1289\u003c/code\u003e\u003c/a\u003e Changelog + reformat\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-gpdb20160503` from 5.1.0 to 5.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/alibabacloud-python-sdk/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-tea-openapi` from 0.4.3 to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/darabonba-openapi/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 0.5.20 to 1.5.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.8\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.8\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.8\u003c/code\u003e\nBuild Date: \u003ccode\u003e2026-04-16T23:35\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.5.8.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: Make materialize_logs aware of sharding by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6833\"\u003echroma-core/chroma#6833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: retry per shard instead of every shard by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6841\"\u003echroma-core/chroma#6841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Integrate seal operator for sharded collections by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6842\"\u003echroma-core/chroma#6842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Merge, sort and truncate in FE by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6846\"\u003echroma-core/chroma#6846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Prefetch per shard by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6850\"\u003echroma-core/chroma#6850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Create per-tenant config in the compactor for shard sizes by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6847\"\u003echroma-core/chroma#6847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: support partial manifest scans by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6799\"\u003echroma-core/chroma#6799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Replace join_all with buffered_unordered with a limit in block loads by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6854\"\u003echroma-core/chroma#6854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add pod anti-affinity support to StatefulSet helm templates by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6859\"\u003echroma-core/chroma#6859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Disable stall protection for reads. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6858\"\u003echroma-core/chroma#6858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove fanout in writer by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6861\"\u003echroma-core/chroma#6861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Make the most recent log spanner-migration idempotent. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6863\"\u003echroma-core/chroma#6863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/config\"\u003eENH\u003c/a\u003e: make admin RPC timeout configurable by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6864\"\u003echroma-core/chroma#6864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add CLI I/O terminal for testing by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6860\"\u003echroma-core/chroma#6860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Fix missing word in manage-collections documentation by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6873\"\u003echroma-core/chroma#6873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Composite rules for tiering by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6876\"\u003echroma-core/chroma#6876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add I/O abstraction to CLI commands by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6877\"\u003echroma-core/chroma#6877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Add member_id to node_name lookup in ClientAssigner by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6875\"\u003echroma-core/chroma#6875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: get_prefix use buffer ordered by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6893\"\u003echroma-core/chroma#6893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Revert \u0026quot;[CLN] Remove compaction_client binary (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6744\"\u003e#6744\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6901\"\u003echroma-core/chroma#6901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add config store abstraction to CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6879\"\u003echroma-core/chroma#6879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add Superlinked embedding function integration by \u003ca href=\"https://github.com/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add MCMR property tests and fix dirty log detection by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6835\"\u003echroma-core/chroma#6835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update stars/followers count by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6908\"\u003echroma-core/chroma#6908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make compaction client grpc timeout configurable by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6902\"\u003echroma-core/chroma#6902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/faults\"\u003eENH\u003c/a\u003e: add fault injection control plane by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6795\"\u003echroma-core/chroma#6795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Change retry rate limits in s3 client by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6917\"\u003echroma-core/chroma#6917\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6849\"\u003echroma-core/chroma#6849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use the official Rust client in the CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6906\"\u003echroma-core/chroma#6906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndBoundedWal read level by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6914\"\u003echroma-core/chroma#6914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndAdaptiveWal to clients by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6918\"\u003echroma-core/chroma#6918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6921\"\u003echroma-core/chroma#6921\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/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\"\u003ehttps://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.7\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.7\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.7\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/124a6cb7331cda1efc48a48390c25409fce22423\"\u003e\u003ccode\u003e124a6cb\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6921\"\u003e#6921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/0367cb4de40b79ac838770c3e04ec921808b10b2\"\u003e\u003ccode\u003e0367cb4\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndAdaptiveWal to clients (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6918\"\u003e#6918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f749f58f881830ad5ed4d728529b5d491656f825\"\u003e\u003ccode\u003ef749f58\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndBoundedWal read level (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6914\"\u003e#6914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/db9a8bd595409f26a83ac2eca8ab3c4e9e168bee\"\u003e\u003ccode\u003edb9a8bd\u003c/code\u003e\u003c/a\u003e [ENH] Use the official Rust client in the CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6906\"\u003e#6906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f9a7f68f24501ce00ad8e1a9200993331458a8ee\"\u003e\u003ccode\u003ef9a7f68\u003c/code\u003e\u003c/a\u003e \u003ca href=\"wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6849\"\u003e#6849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/c94eb76bcea0f3153bb8f7058b173abfb401e24e\"\u003e\u003ccode\u003ec94eb76\u003c/code\u003e\u003c/a\u003e [ENH]: Change retry rate limits in s3 client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6917\"\u003e#6917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a760f7ecb934e29c6d308cecc2dc413e359e89f2\"\u003e\u003ccode\u003ea760f7e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"faults\"\u003eENH\u003c/a\u003e: add fault injection control plane (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6795\"\u003e#6795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a5a919a6ac849b55c6922e13204e97504945474a\"\u003e\u003ccode\u003ea5a919a\u003c/code\u003e\u003c/a\u003e [ENH]: Make compaction client grpc timeout configurable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6902\"\u003e#6902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/47b29487b656135209221418a9efcc545a2723af\"\u003e\u003ccode\u003e47b2948\u003c/code\u003e\u003c/a\u003e [ENH] Update stars/followers count (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6908\"\u003e#6908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/71afcf0b4294f8fe2d4d1bd2aaaf1ff4f4791446\"\u003e\u003ccode\u003e71afcf0\u003c/code\u003e\u003c/a\u003e [ENH] add MCMR property tests and fix dirty log detection (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/0.5.20...1.5.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clickhouse-connect` from 0.14.1 to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/releases\"\u003eclickhouse-connect's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.15.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.15.0\u003c/h2\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eComprehensive ClickHouse \u003ccode\u003eJOIN\u003c/code\u003e support in SQLAlchemy via \u003ccode\u003ech_join()\u003c/code\u003e with all strictness/distribution modifiers and \u003ccode\u003eUSING\u003c/code\u003e syntax (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/635\"\u003e#635\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMulti-column \u003ccode\u003earray_join()\u003c/code\u003e for parallel array expansion (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing Replicated engine variants (\u003ccode\u003eReplicatedReplacingMergeTree\u003c/code\u003e, etc.) (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazy imports for \u003ccode\u003enumpy\u003c/code\u003e, \u003ccode\u003epandas\u003c/code\u003e, \u003ccode\u003epyarrow\u003c/code\u003e, and \u003ccode\u003epolars\u003c/code\u003e, ~4x faster bare import time (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e.final()\u003c/code\u003e and \u003ccode\u003e.sample()\u003c/code\u003e silently overwriting each other when chained (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003esqlalchemy.values()\u003c/code\u003e to emit ClickHouse \u003ccode\u003eVALUES\u003c/code\u003e table function syntax (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/681\"\u003e#681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eGraphiteMergeTree\u003c/code\u003e to properly quote \u003ccode\u003econfig_section\u003c/code\u003e argument\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003epy.typed\u003c/code\u003e marker that was causing false type errors for mypy/pyright users (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.0\"\u003ehttps://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.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/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md\"\u003eclickhouse-connect's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1, 2026-03-30\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Previously, \u003ccode\u003ebind_query\u003c/code\u003e always converted datetimes to the server timezone, ignoring explicit timezone declarations in type hints like \u003ccode\u003eDateTime64(6, 'UTC')\u003c/code\u003e. This caused incorrect query results when \u003ccode\u003eserver_tz\u003c/code\u003e differed from the hint timezone. Handles \u003ccode\u003eLowCardinality\u003c/code\u003e, \u003ccode\u003eNullable\u003c/code\u003e, and container type wrappers. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.0, 2026-03-26\u003c/h2\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Comprehensive ClickHouse JOIN support via the new \u003ccode\u003ech_join()\u003c/code\u003e helper. All strictness modifiers (\u003ccode\u003eALL\u003c/code\u003e, \u003ccode\u003eANY\u003c/code\u003e, \u003ccode\u003eSEMI\u003c/code\u003e, \u003ccode\u003eANTI\u003c/code\u003e, \u003ccode\u003eASOF\u003c/code\u003e), the \u003ccode\u003eGLOBAL\u003c/code\u003e distribution modifier, and explicit \u003ccode\u003eCROSS JOIN\u003c/code\u003e are now available. Use with \u003ccode\u003eselect_from()\u003c/code\u003e to generate ClickHouse-specific join syntax like \u003ccode\u003eGLOBAL ALL LEFT OUTER JOIN\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/635\"\u003e#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003earray_join()\u003c/code\u003e now supports multiple columns for parallel array expansion. Pass a list of columns and a matching list of aliases to generate \u003ccode\u003eARRAY JOIN col1 AS a, col2 AS b, col3 AS c\u003c/code\u003e. Single-column usage is unchanged. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/633\"\u003e#633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003ech_join()\u003c/code\u003e now supports \u003ccode\u003eUSING\u003c/code\u003e syntax via the new \u003ccode\u003eusing\u003c/code\u003e parameter. Pass a list of column name strings to generate \u003ccode\u003eUSING (col1, col2)\u003c/code\u003e instead of \u003ccode\u003eON\u003c/code\u003e. This is important for \u003ccode\u003eFULL OUTER JOIN\u003c/code\u003e where \u003ccode\u003eUSING\u003c/code\u003e merges the join column correctly while \u003ccode\u003eON\u003c/code\u003e produces default values (0, '') for unmatched sides. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/636\"\u003e#636\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Add missing Replicated table engine variants: \u003ccode\u003eReplicatedReplacingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedCollapsingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedVersionedCollapsingMergeTree\u003c/code\u003e, and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/687\"\u003e#687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazy imports for optional dependencies (numpy, pandas, pyarrow, polars). If installed, these heavy libraries are no longer imported at \u003ccode\u003eimport clickhouse_connect\u003c/code\u003e time. They are only imported when features that need them are actually used. The C/Numpy optimization bridge is also deferred. This speeds up bare import time of \u003ccode\u003eclickhouse-connect\u003c/code\u003e about 4X in environments where all four are installed. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/589\"\u003e#589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003epy.typed\u003c/code\u003e marker file. The package does not have comprehensive type annotations, so the PEP 561 marker was causing false type errors for mypy/pyright users. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/691\"\u003e#691\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003e.final()\u003c/code\u003e and \u003ccode\u003e.sample()\u003c/code\u003e silently overwriting each other when chained. Both methods now store modifiers as custom attributes on the \u003ccode\u003eSelect\u003c/code\u003e instance and render them during compilation, replacing the previous \u003ccode\u003ewith_hint()\u003c/code\u003e approach that only allowed one hint per table. Chaining in either order (e.g. \u003ccode\u003eselect(t).final().sample(0.1)\u003c/code\u003e) correctly produces \u003ccode\u003eFROM t FINAL SAMPLE 0.1\u003c/code\u003e. Also fixes rendering for aliased tables (\u003ccode\u003eFROM t AS u FINAL\u003c/code\u003e) and supports explicit table targeting in joins. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/658\"\u003e#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003esqlalchemy.values()\u003c/code\u003e to generate ClickHouse's \u003ccode\u003eVALUES\u003c/code\u003e table function syntax. The compiler now emits \u003ccode\u003eVALUES('col1 Type1, col2 Type2', ...)\u003c/code\u003e with the column structure as the first argument, instead of the standard SQL form that places column names after the alias. Generic SQLAlchemy types are mapped to ClickHouse equivalents (e.g. \u003ccode\u003eInteger\u003c/code\u003e to \u003ccode\u003eInt32\u003c/code\u003e, \u003ccode\u003eString\u003c/code\u003e to \u003ccode\u003eString\u003c/code\u003e). Also handles CTE usage by wrapping in \u003ccode\u003eSELECT * FROM VALUES(...)\u003c/code\u003e. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/681\"\u003e#681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003eGraphiteMergeTree\u003c/code\u003e and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e to properly single-quote the \u003ccode\u003econfig_section\u003c/code\u003e argument as ClickHouse requires.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05ec766c6c336812d1307eb49df33ba954cebb3d\"\u003e\u003ccode\u003e05ec766\u003c/code\u003e\u003c/a\u003e respect bind param tz type hints, bf release 0.15.1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/c4c2a4e2e1a6b1b54eff4e3effda4eab0781b0eb\"\u003e\u003ccode\u003ec4c2a4e\u003c/code\u003e\u003c/a\u003e 0.15.0 release prep (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/cd8cbf48b01ebb68959745aa223f256240d0fe94\"\u003e\u003ccode\u003ecd8cbf4\u003c/code\u003e\u003c/a\u003e Joe/remove pytyped and other small cleanup issues (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05859efdd18e4ec0d28ae7627b83bb3fd26239be\"\u003e\u003ccode\u003e05859ef\u003c/code\u003e\u003c/a\u003e implement lazy loading of heavy optional deps (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/689\"\u003e#689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/611161f54bcffa42cac313ab5c131e552fc9b2f0\"\u003e\u003ccode\u003e611161f\u003c/code\u003e\u003c/a\u003e SQLAlchemy core improvements (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/5fd16eb13fc9af0861af608bdfd5c717623ae8ba\"\u003e\u003ccode\u003e5fd16eb\u003c/code\u003e\u003c/a\u003e simple ddl support for a few new engine types (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/a0e621c1e413909086e5344dbc56e3cc8a6a57da\"\u003e\u003ccode\u003ea0e621c\u003c/code\u003e\u003c/a\u003e add Peter for reviews (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `couchbase` from 4.5.0 to 4.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fab7f5259e72e4533db0ca25cbfa46fac6388db3\"\u003e\u003ccode\u003efab7f52\u003c/code\u003e\u003c/a\u003e PYCBC-1765: Threshold Logging Optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/6362669bc6ba71194353c5a7535dd62416c5205b\"\u003e\u003ccode\u003e6362669\u003c/code\u003e\u003c/a\u003e PYCBC-1764 - Improve how client handles KV operations across the C-extension ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/f317a0fafe626f2efcd9789d2621de8fff90ecb5\"\u003e\u003ccode\u003ef317a0f\u003c/code\u003e\u003c/a\u003e PYCBC-1763: Add checks for span recording for OTel Integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/1305503f4a295b679b210c9304537c510f966630\"\u003e\u003ccode\u003e1305503\u003c/code\u003e\u003c/a\u003e PYCBC-1762: Observability Code Structure Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/7f00efbc66b7bf83ef6aa466daeed6adad740321\"\u003e\u003ccode\u003e7f00efb\u003c/code\u003e\u003c/a\u003e PYCBC-1761: Tracing \u0026amp; Metrics Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/db77ebffae28ebb317298d6e986f70f3cfe2fa12\"\u003e\u003ccode\u003edb77ebf\u003c/code\u003e\u003c/a\u003e PYCBC-1753: Client is not passing scope_name or bucket_name when using scope ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/d7bfdba616225373ab5c71466fed1d9d9fc8957d\"\u003e\u003ccode\u003ed7bfdba\u003c/code\u003e\u003c/a\u003e PYCBC-1759: Fix compounding encoding span attribute propagation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/b2fc5d9b008113f6ef533d3b285014d7c44e9076\"\u003e\u003ccode\u003eb2fc5d9\u003c/code\u003e\u003c/a\u003e PYCBC-1758: Propagate missing ClusterOptions to C++ core\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/62adf0b6a1b841266d57e65d055a86e6a726227e\"\u003e\u003ccode\u003e62adf0b\u003c/code\u003e\u003c/a\u003e PYCBC-1752: Provide ClusterOption to enable C++ core lazy KV connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fbceef9ed86af073f7f4144b5154a80a52130208\"\u003e\u003ccode\u003efbceef9\u003c/code\u003e\u003c/a\u003e Add typing-extensions dependency for Python versions \u0026lt; 3.13\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/couchbase/couchbase-python-client/compare/4.5.0...4.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elasticsearch` from 8.14.0 to 9.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/elasticsearch-py/releases\"\u003eelasticsearch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.3.0\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epack_dense_vector\u003c/code\u003e helper function to pack dense vectors for efficient uploading (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3219\"\u003e#3219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew and updated ES|QL functions in the ES|QL query builder for 9.3 and Serverless (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAPI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ecat.circuit_breaker\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eesql.get_view\u003c/code\u003e, \u003ccode\u003eesql.put_view\u003c/code\u003e and \u003ccode\u003eesql.delete_view\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eindices.get_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.put_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.delete_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_all_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_sample\u003c/code\u003e, \u003ccode\u003eindices.get_sample_stats\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003einference.put_groq\u003c/code\u003e, \u003ccode\u003einference.put_openshift_ai\u003c/code\u003e, \u003ccode\u003einference.put_nvidia\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edownsampling_method\u003c/code\u003e argument to \u003ccode\u003eindices.put_data_lifecycle\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ereturn_documents\u003c/code\u003e and \u003ccode\u003etop_n\u003c/code\u003e arguments to \u003ccode\u003einference.rerank\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eclose_job\u003c/code\u003e argument to \u003ccode\u003eml.stop_datafeed\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecertificate_identity\u003c/code\u003e to \u003ccode\u003esecurity.create_cross_cluster_api_key\u003c/code\u003e and \u003ccode\u003esecurity.update_cross_cluster_api_key\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServerless-specific\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eproject_routing\u003c/code\u003e argument to \u003ccode\u003eproject.tags\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDSL\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eNumpyDenseVector\u003c/code\u003e field, with support for dense vectors based on numpy arrays (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eExponentialHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003etime_series_metric\u003c/code\u003e argument to \u003ccode\u003eHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_disk_rescore\u003c/code\u003e argument from \u003ccode\u003eDenseVectorIndexOptions\u003c/code\u003e type\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eslices\u003c/code\u003e argument to \u003ccode\u003eUpdateByQueryResponse\u003c/code\u003e type\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.2.1\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInstrument ping with OTel (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3160\"\u003e#3160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake positional arguments in DSL generated classes explicit  (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3233\"\u003e#3233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3212\"\u003e#3212\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eES|QL query builder: fix missing assignment (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3151\"\u003e#3151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse relative imports to fix \u003ccode\u003eelasticsearch9\u003c/code\u003e package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003etransform.get_node_stats\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003erequests_per_second\u003c/code\u003e argument to \u003ccode\u003edelete_by_query_rethrottle\u003c/code\u003e, \u003ccode\u003ereindex_rethrottle\u003c/code\u003e and \u003ccode\u003eupdate_by_query_rethrottle\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eallow_closed\u003c/code\u003e, \u003ccode\u003eallow_no_indices\u003c/code\u003e, \u003ccode\u003eexpand_wildcards\u003c/code\u003e, \u003ccode\u003eignore_throttled\u003c/code\u003e and \u003ccode\u003eignore_available\u003c/code\u003e arguments to \u003ccode\u003ecat.segments\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echunking_settings\u003c/code\u003e argument to \u003ccode\u003einference.put_watsonxai\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eid\u003c/code\u003e argument to \u003ccode\u003eml.stop_trained_model_deployment\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eRemoved \u003ccode\u003echunking_settings\u003c/code\u003e argument from \u003ccode\u003einference.put_anthropic\u003c/code\u003e, \u003ccode\u003einference.put_contextualai\u003c/code\u003e, \u003ccode\u003einference.put_deepseek\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/adae2d6d3d76f3ea75cd758ce64223bd76df45e5\"\u003e\u003ccode\u003eadae2d6\u003c/code\u003e\u003c/a\u003e Release 9.3.0 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3300\"\u003e#3300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ea2227c743d7cacb474efecf4d8b84fa553f9eec\"\u003e\u003ccode\u003eea2227c\u003c/code\u003e\u003c/a\u003e Add Python 3.14 trove classifier (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3296\"\u003e#3296\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3299\"\u003e#3299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b507e3e2d91ff0b6f8fb4a53ea23caa989677436\"\u003e\u003ccode\u003eb507e3e\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3293\"\u003e#3293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/76150204725b1495cad3348c573406fc1f3512d1\"\u003e\u003ccode\u003e7615020\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3280\"\u003e#3280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ef8d102b3fc4d7572e0fd0bb56afe4291fddc529\"\u003e\u003ccode\u003eef8d102\u003c/code\u003e\u003c/a\u003e Stop using pytz (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3275\"\u003e#3275\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3278\"\u003e#3278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/65870f3504344ba7f67feb7721522bef936a92cf\"\u003e\u003ccode\u003e65870f3\u003c/code\u003e\u003c/a\u003e allow adding elasticsearch query filter for mmr searching (elastic#2638) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/32\"\u003e#32\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b110f19a49ad492d2d6aa514afaac35360ac3c93\"\u003e\u003ccode\u003eb110f19\u003c/code\u003e\u003c/a\u003e Updates to ES|QL functions for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3266\"\u003e#3266\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3272\"\u003e#3272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/f3d082788f52b5fe3c80926624fa8a61aa4deb37\"\u003e\u003ccode\u003ef3d0827\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3269\"\u003e#3269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/80818cc2640fcdf902919a3dc5500ae945d33271\"\u003e\u003ccode\u003e80818cc\u003c/code\u003e\u003c/a\u003e Auto-generated code for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3262\"\u003e#3262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/6baa03faedefc90ccbc5f902626cc8cea46aed6a\"\u003e\u003ccode\u003e6baa03f\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3252\"\u003e#3252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/elasticsearch-py/compare/v8.14.0...v9.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 3.1.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvecto-rs[sqlalchemy]` to 0.2.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tensorchord/pgvecto.rs/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymilvus` from 2.6.10 to 2.6.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/milvus-io/pymilvus/releases\"\u003epymilvus's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMilvus v2.6.12 Release Notes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efix: default to port 443 for https:// URIs in MilvusClient\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3372\"\u003e#3372\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3374\"\u003e#3374\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3369\"\u003e#3369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: remove duplicate timeout kwarg in Collection.__init__\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3378\"\u003e#3378\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/greenned\"\u003e\u003ccode\u003e@​greenned\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3370\"\u003e#3370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: ensure page_retain_order is passed to search params\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3366\"\u003e#3366\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3383\"\u003e#3383\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/alwayslove2013\"\u003e\u003ccode\u003e@​alwayslove2013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2804\"\u003e#2804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle empty result set with ARRAY field in query deserialization\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3389\"\u003e#3389\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3396\"\u003e#3396\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/karsten-reversefashion\"\u003e\u003ccode\u003e@​karsten-reversefashion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3386\"\u003e#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: infer_dtype_bydata returns UNKNOWN for list of strings instead of ARRAY\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3390\"\u003e#3390\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3397\"\u003e#3397\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/ShirohaUmi\"\u003e\u003ccode\u003e@​ShirohaUmi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2896\"\u003e#2896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: rewrite _version_helper.py to use only public setuptools_scm API\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3359\"\u003e#3359\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3379\"\u003e#3379\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: remove dead code and redundant exception handling in async_grpc_handler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3365\"\u003e#3365\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3377\"\u003e#3377\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: replace redundant raise-from-self with bare raise (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3367\"\u003e#3367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3381\"\u003e#3381\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: fix return type annotations and bare raise in connections.py (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3373\"\u003e#3373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3382\"\u003e#3382\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: remove dead fake_register_link method from GrpcHandler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3391\"\u003e#3391\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3395\"\u003e#3395\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: bump actions/checkout to v6 and actions/setup-python to v6 (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3400\"\u003e#3400\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3403\"\u003e#3403\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\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/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\"\u003ehttps://github.com/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyMilvus v2.6.11 Release Notes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efix: pass address to GrpcHandler in ConnectionManager strategies\u003c/strong\u003e — fixed Milvus Lite local path broken since 2.6.10 (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3321\"\u003e#3321\u003c/a\u003e,  \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3323\"\u003e#3323\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: prevent \u0026quot;Cannot invoke RPC on closed channel\u0026quot; after connection recovery\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3326\"\u003e#3326\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3345\"\u003e#3345\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: correct parameter name typos in QueryIterator causing partition filter bypass\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3324\"\u003e#3324\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3330\"\u003e#3330\u003c/a\u003e) by\n\u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle None response in search to prevent AttributeError\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3331\"\u003e#3331\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3332\"\u003e#3332\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: resolve bytes vector type misidentification in search path\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3334\"\u003e#3334\u003c/a\u003e) by \u003ca href=\"https://github.com/zhuwenxing\"\u003e\u003ccode\u003e@​zhuwenxing\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: guard MilvusClient._get_connection against None handler\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3337\"\u003e#3337\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3338\"\u003e#3338\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle None credentials in connections.connect()\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3343\"\u003e#3343\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3353\"\u003e#3353\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: use explicit length check for numpy array compatibility in search\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3342\"\u003e#3342\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3352\"\u003e#3352\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: clarify wrong-port guidance for UNIMPLEMENTED errors\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3315\"\u003e#3315\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3322\"\u003e#3322\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: display human-readable state and level in SegmentInfo repr\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3336\"\u003e#3336\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3355\"\u003e#3355\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: pin setuptools_scm\u0026lt;9 to prevent _types import breakage\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3348\"\u003e#3348\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures \u0026amp; Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efeat: support Python 3.14\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3306\"\u003e#3306\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3318\"\u003e#3318\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: extract _get_dim helper to deduplicate dimension lookup (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3344\"\u003e#3344\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3350\"\u003e#3350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erefactor: remove redundant \u003ccode\u003eraise ex from ex\u003c/code\u003e try/except blocks (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3341\"\u003e#3341\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3351\"\u003e#3351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erefactor: consolidate duplicate common_pb2 import in prepare.py (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3346\"\u003e#3346\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3354\"\u003e#3354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest: improve unit test coverage from 83.98% to 90% (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3313\"\u003e#3313\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3320\"\u003e#3320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: remove obsolete release_event and nightly_ci workflows (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3358\"\u003e#3358\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.11\"\u003ehttps://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.11\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/milvus-io/pymilvus/commit/09307a9ce91a0a27d0e83ce8e43b74e69a7b094e\"\u003e\u003ccode\u003e09307a9\u003c/code\u003e\u003c/a\u003e [Cherry-pick 2.6] ci: bump actions/checkout to v6 and actions/setup-python to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/2dfd20310c9f8a24cd9c3f8977853659917d0442\"\u003e\u003ccode\u003e2dfd203\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: rewrite \u003cem\u003eversion_helper.py to use only public setuptools\u003c/em\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fe3cf6d4201e3839b2655b90bbbc16299e86945\"\u003e\u003ccode\u003e8fe3cf6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: infer_dtype_bydata returns UNKNOWN for list of strings in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/3e531a3aac4bcff96e3828147bd522b20bed5a3d\"\u003e\u003ccode\u003e3e531a3\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: handle empty result set with ARRAY field in query deseria...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/87b0ba2a449a7b1653a385236a6ffe746a2fa04b\"\u003e\u003ccode\u003e87b0ba2\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: remove dead fake_register_link method from GrpcHandl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/aec3ef6738cabf0ede39ae55aa94c76a94379ea1\"\u003e\u003ccode\u003eaec3ef6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: ensure page_retain_order is passed to search params (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/336\"\u003e#336\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/e27aca78c7dd2de1f749827ce036b83585496af0\"\u003e\u003ccode\u003ee27aca7\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: fix return type annotations and bare raise in connec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fff01aa9dabc8242dca98b06b80dbf03bf53617\"\u003e\u003ccode\u003e8fff01a\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: replace redundant raise-from-self with bare raise (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/18e1610fdbd5d4df23cf240ce469ac184b51b7ab\"\u003e\u003ccode\u003e18e1610\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: remove duplicate timeout kwarg in Collection.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/0339212eccb09ae78ce03525d4c61bb10ef76cca\"\u003e\u003ccode\u003e0339212\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor(async_grpc_handler): remove dead code and redundant e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymochow` from 2.3.6 to 2.4.0\n\nUpdates `pyobvector` from 0.2.25 to 0.2.26\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oceanbase/pyobvector/releases\"\u003epyobvector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease-v0.2.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: import Expression from sqlglot.expressions for sqlglot 30+ by \u003ca href=\"https://github.com/xxsc0529\"\u003e\u003ccode\u003e@​xxsc0529\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oceanbase/pyobvector/pull/64\"\u003eoceanbase/pyobvector#64\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003ehttps://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\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/oceanbase/pyobvector/blob/main/RELEASE_NOTES.md\"\u003epyobvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003e0.2.26\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e-Fix: Compatible with the latest version of sqlglot\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/oceanbase/pyobvector/commit/6190a03e2627b8afc3bfbf79e6592141d8cf63af\"\u003e\u003ccode\u003e6190a03\u003c/code\u003e\u003c/a\u003e v0.2.26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/commit/b0a3d8c045f202017374a6ad2fc54fdfdae9dc19\"\u003e\u003ccode\u003eb0a3d8c\u003c/code\u003e\u003c/a\u003e fix: impo...\n\n_Description has been truncated_","html_url":"https://github.com/Lraviv/dify-transfer/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lraviv%2Fdify-transfer/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"}},{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":null,"pr_created_at":"2026-05-02T01:48:17.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"4367497916","node_id":"PR_kwDOSE-lVs7Xkr9E","number":34,"state":"closed","title":"chore(deps): bump the vdb group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-08T22:18:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-02T01:48:17.000Z","updated_at":"2026-05-08T22:18:17.000Z","time_to_close":592198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"vdb","update_count":20,"packages":[{"name":"weaviate-client","old_version":"4.20.4","new_version":"4.21.0","repository_url":"https://github.com/weaviate/weaviate-python-client"},{"name":"chromadb","old_version":"0.5.20","new_version":"1.5.8","repository_url":"https://github.com/chroma-core/chroma"},{"name":"elasticsearch","old_version":"8.14.0","new_version":"9.3.0","repository_url":"https://github.com/elastic/elasticsearch-py"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pymochow","old_version":"2.3.6","new_version":"2.4.0"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [weaviate-client](https://github.com/weaviate/weaviate-python-client), [alibabacloud-gpdb20160503](https://github.com/aliyun/alibabacloud-python-sdk), [alibabacloud-tea-openapi](https://github.com/aliyun/darabonba-openapi), [chromadb](https://github.com/chroma-core/chroma), [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect), clickzetta-connector-python, [couchbase](https://github.com/couchbase/couchbase-python-client), [elasticsearch](https://github.com/elastic/elasticsearch-py), [opensearch-py](https://github.com/opensearch-project/opensearch-py), [pgvecto-rs](https://github.com/tensorchord/pgvecto.rs), [pymilvus](https://github.com/milvus-io/pymilvus), [pymochow](http://bce.baidu.com), [pyobvector](https://github.com/oceanbase/pyobvector), [qdrant-client](https://github.com/qdrant/qdrant-client), [intersystems-irispython](https://www.intersystems.com/), [tablestore](https://github.com/aliyun/aliyun-tablestore-python-sdk), tcvectordb, [volcengine-compat](https://github.com/yaoice/volc-sdk-python), [xinference-client](https://github.com/xorbitsai/inference-client) and [mysql-connector-python](https://github.com/mysql/mysql-connector-python) to permit the latest version.\nUpdates `weaviate-client` from 4.20.4 to 4.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weaviate/weaviate-python-client/releases\"\u003eweaviate-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.21.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003e1.37\u003c/code\u003e features by \u003ca href=\"https://github.com/tsmith023\"\u003e\u003ccode\u003e@​tsmith023\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1988\"\u003eweaviate/weaviate-python-client#1988\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.5...v4.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.20.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Object TTL schema export to match server json by \u003ca href=\"https://github.com/dudanogueira\"\u003e\u003ccode\u003e@​dudanogueira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1958\"\u003eweaviate/weaviate-python-client#1958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for audio modality in multi2vec-google vectorizer config by \u003ca href=\"https://github.com/antas-marcin\"\u003e\u003ccode\u003e@​antas-marcin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1983\"\u003eweaviate/weaviate-python-client#1983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: export FilterReturn from weaviate.classes.query by \u003ca href=\"https://github.com/renaudcepre\"\u003e\u003ccode\u003e@​renaudcepre\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1993\"\u003eweaviate/weaviate-python-client#1993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: parse asyncConfig from replication config GET response by \u003ca href=\"https://github.com/jfrancoa\"\u003e\u003ccode\u003e@​jfrancoa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1996\"\u003eweaviate/weaviate-python-client#1996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: throw specific exception on empty list filters for time filters by \u003ca href=\"https://github.com/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(deps): remove unmaintained deprecation package, use stdlib instead by \u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse get() instead of direct dict access by \u003ca href=\"https://github.com/DanielJanicek\"\u003e\u003ccode\u003e@​DanielJanicek\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1995\"\u003eweaviate/weaviate-python-client#1995\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/Maanik23\"\u003e\u003ccode\u003e@​Maanik23\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/2004\"\u003eweaviate/weaviate-python-client#2004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NIK-TIGER-BILL\"\u003e\u003ccode\u003e@​NIK-TIGER-BILL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/pull/1999\"\u003eweaviate/weaviate-python-client#1999\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\"\u003ehttps://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.20.5\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/weaviate/weaviate-python-client/blob/main/docs/changelog.rst\"\u003eweaviate-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.21.0\u003c/h2\u003e\n\u003cp\u003eThis minor version includes:\n- Support for new 1.37 features:\n- Add support for the new \u003ccode\u003eblobHash\u003c/code\u003e property data type\n- Add support for returning profiling when making queries with the \u003ccode\u003ereturn_metadata=[\u0026quot;query_profile\u0026quot;]\u003c/code\u003e parameter\n- Add support for on-demaned tokenization through the \u003ccode\u003eclient.tokenize\u003c/code\u003e namespace\n- Add support for managing permissions for accessing the native MCP server\n- Add support for collection export\n- Add support for incremental backups\n- Minor bug fixes and improvements:\n- Change \u003ccode\u003ealpha\u003c/code\u003e queries and aggregations to use server-side default parameter\n- Fixes rare flakey behaviour of \u003ccode\u003eclient.batch.stream\u003c/code\u003e on server hangup\u003c/p\u003e\n\u003ch2\u003eVersion 4.20.5\u003c/h2\u003e\n\u003cp\u003eThis patch version includes:\n- Fix objectTTL config export\n- Add support for audio modality in multi2vec-google\n- Export FilterReturn from weaviate.classes.query\n- Fix updating async replication config\n- Remove unmaintained \u003ccode\u003edeprecated\u003c/code\u003e dependency\n- Throw exception on empty time filters\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/weaviate/weaviate-python-client/commit/592bc7a2805885a92c8379c3cb8162bcc6702741\"\u003e\u003ccode\u003e592bc7a\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003e1.37\u003c/code\u003e features (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/1988\"\u003e#1988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/6dce1053e148afd014e04baac6b8915e73d0211d\"\u003e\u003ccode\u003e6dce105\u003c/code\u003e\u003c/a\u003e Improve flakiness of SSB tests (\u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2015\"\u003e#2015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/5a32208a724a6496a146dd27d8642b9ed7a00670\"\u003e\u003ccode\u003e5a32208\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2013\"\u003e#2013\u003c/a\u003e from weaviate/fix_flaky_user_test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/feb4e4c99ce3af000cc1c7f24187640d426a301c\"\u003e\u003ccode\u003efeb4e4c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2009\"\u003e#2009\u003c/a\u003e from weaviate/dependabot/pip/pytest-9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/f2cf9658f635c8a914c2fdbf5d9659c9945ef6ea\"\u003e\u003ccode\u003ef2cf965\u003c/code\u003e\u003c/a\u003e Better variable names\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/a3a7208f725573403a9ecba6399845634b8926f4\"\u003e\u003ccode\u003ea3a7208\u003c/code\u003e\u003c/a\u003e Replace random number with unique and deterministic name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/93fff165025a2dc354687fac51ff8b52554f38a7\"\u003e\u003ccode\u003e93fff16\u003c/code\u003e\u003c/a\u003e build(deps): bump pytest from 9.0.2 to 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/4d66220f37faa5089334d98538a61b0ced709b00\"\u003e\u003ccode\u003e4d66220\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/weaviate/weaviate-python-client/issues/2007\"\u003e#2007\u003c/a\u003e from weaviate/changelog_4_20_5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/78fa5f7f08ea50b2a1041eecd2d010f81885922f\"\u003e\u003ccode\u003e78fa5f7\u003c/code\u003e\u003c/a\u003e Update docs/changelog.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weaviate/weaviate-python-client/commit/2af1289def1346ce6e21f1bc05d9966e42a7bf5e\"\u003e\u003ccode\u003e2af1289\u003c/code\u003e\u003c/a\u003e Changelog + reformat\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weaviate/weaviate-python-client/compare/v4.20.4...v4.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-gpdb20160503` to 5.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/alibabacloud-python-sdk/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alibabacloud-tea-openapi` to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aliyun/darabonba-openapi/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chromadb` from 0.5.20 to 1.5.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chroma-core/chroma/releases\"\u003echromadb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.8\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.8\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.8\u003c/code\u003e\nBuild Date: \u003ccode\u003e2026-04-16T23:35\u003c/code\u003e\nPIP Package: \u003ccode\u003echroma-1.5.8.tar.gz\u003c/code\u003e\nGithub Container Registry Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\nDockerHub Image: \u003ccode\u003e:1.5.8\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ENH]: Make materialize_logs aware of sharding by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6833\"\u003echroma-core/chroma#6833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: retry per shard instead of every shard by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6841\"\u003echroma-core/chroma#6841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Integrate seal operator for sharded collections by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6842\"\u003echroma-core/chroma#6842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Merge, sort and truncate in FE by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6846\"\u003echroma-core/chroma#6846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Prefetch per shard by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6850\"\u003echroma-core/chroma#6850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Create per-tenant config in the compactor for shard sizes by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6847\"\u003echroma-core/chroma#6847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: support partial manifest scans by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6799\"\u003echroma-core/chroma#6799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Replace join_all with buffered_unordered with a limit in block loads by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6854\"\u003echroma-core/chroma#6854\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add pod anti-affinity support to StatefulSet helm templates by \u003ca href=\"https://github.com/jasonvigil\"\u003e\u003ccode\u003e@​jasonvigil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6859\"\u003echroma-core/chroma#6859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE] Disable stall protection for reads. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6858\"\u003echroma-core/chroma#6858\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Remove fanout in writer by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6861\"\u003echroma-core/chroma#6861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]  Make the most recent log spanner-migration idempotent. by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6863\"\u003echroma-core/chroma#6863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/config\"\u003eENH\u003c/a\u003e: make admin RPC timeout configurable by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6864\"\u003echroma-core/chroma#6864\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add CLI I/O terminal for testing by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6860\"\u003echroma-core/chroma#6860\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Fix missing word in manage-collections documentation by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6873\"\u003echroma-core/chroma#6873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Composite rules for tiering by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6876\"\u003echroma-core/chroma#6876\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add I/O abstraction to CLI commands by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6877\"\u003echroma-core/chroma#6877\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Add member_id to node_name lookup in ClientAssigner by \u003ca href=\"https://github.com/davedash\"\u003e\u003ccode\u003e@​davedash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6875\"\u003echroma-core/chroma#6875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUG]: get_prefix use buffer ordered by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6893\"\u003echroma-core/chroma#6893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CHORE]: Revert \u0026quot;[CLN] Remove compaction_client binary (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6744\"\u003e#6744\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6901\"\u003echroma-core/chroma#6901\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add config store abstraction to CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6879\"\u003echroma-core/chroma#6879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DOC] Add Superlinked embedding function integration by \u003ca href=\"https://github.com/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] add MCMR property tests and fix dirty log detection by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6835\"\u003echroma-core/chroma#6835\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Update stars/followers count by \u003ca href=\"https://github.com/gshahbazian\"\u003e\u003ccode\u003e@​gshahbazian\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6908\"\u003echroma-core/chroma#6908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Make compaction client grpc timeout configurable by \u003ca href=\"https://github.com/tanujnay112\"\u003e\u003ccode\u003e@​tanujnay112\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6902\"\u003echroma-core/chroma#6902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/faults\"\u003eENH\u003c/a\u003e: add fault injection control plane by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6795\"\u003echroma-core/chroma#6795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH]: Change retry rate limits in s3 client by \u003ca href=\"https://github.com/sanketkedia\"\u003e\u003ccode\u003e@​sanketkedia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6917\"\u003echroma-core/chroma#6917\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/blob/HEAD/wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector by \u003ca href=\"https://github.com/rescrv\"\u003e\u003ccode\u003e@​rescrv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6849\"\u003echroma-core/chroma#6849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Use the official Rust client in the CLI by \u003ca href=\"https://github.com/itaismith\"\u003e\u003ccode\u003e@​itaismith\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6906\"\u003echroma-core/chroma#6906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndBoundedWal read level by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6914\"\u003echroma-core/chroma#6914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[ENH] Add IndexAndAdaptiveWal to clients by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6918\"\u003echroma-core/chroma#6918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 by \u003ca href=\"https://github.com/Sicheng-Pan\"\u003e\u003ccode\u003e@​Sicheng-Pan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6921\"\u003echroma-core/chroma#6921\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/fm1320\"\u003e\u003ccode\u003e@​fm1320\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/chroma-core/chroma/pull/6897\"\u003echroma-core/chroma#6897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\"\u003ehttps://github.com/chroma-core/chroma/compare/1.5.7...1.5.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.7\u003c/h2\u003e\n\u003cp\u003eVersion: \u003ccode\u003e1.5.7\u003c/code\u003e\nGit ref: \u003ccode\u003erefs/tags/1.5.7\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/124a6cb7331cda1efc48a48390c25409fce22423\"\u003e\u003ccode\u003e124a6cb\u003c/code\u003e\u003c/a\u003e [RELEASE] Python 1.5.8 JS 3.4.4 Rust 0.14.0 (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6921\"\u003e#6921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/0367cb4de40b79ac838770c3e04ec921808b10b2\"\u003e\u003ccode\u003e0367cb4\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndAdaptiveWal to clients (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6918\"\u003e#6918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f749f58f881830ad5ed4d728529b5d491656f825\"\u003e\u003ccode\u003ef749f58\u003c/code\u003e\u003c/a\u003e [ENH] Add IndexAndBoundedWal read level (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6914\"\u003e#6914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/db9a8bd595409f26a83ac2eca8ab3c4e9e168bee\"\u003e\u003ccode\u003edb9a8bd\u003c/code\u003e\u003c/a\u003e [ENH] Use the official Rust client in the CLI (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6906\"\u003e#6906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/f9a7f68f24501ce00ad8e1a9200993331458a8ee\"\u003e\u003ccode\u003ef9a7f68\u003c/code\u003e\u003c/a\u003e \u003ca href=\"wal3\"\u003eENH\u003c/a\u003e: add optional upload fault injector (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6849\"\u003e#6849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/c94eb76bcea0f3153bb8f7058b173abfb401e24e\"\u003e\u003ccode\u003ec94eb76\u003c/code\u003e\u003c/a\u003e [ENH]: Change retry rate limits in s3 client (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6917\"\u003e#6917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a760f7ecb934e29c6d308cecc2dc413e359e89f2\"\u003e\u003ccode\u003ea760f7e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"faults\"\u003eENH\u003c/a\u003e: add fault injection control plane (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6795\"\u003e#6795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/a5a919a6ac849b55c6922e13204e97504945474a\"\u003e\u003ccode\u003ea5a919a\u003c/code\u003e\u003c/a\u003e [ENH]: Make compaction client grpc timeout configurable (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6902\"\u003e#6902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/47b29487b656135209221418a9efcc545a2723af\"\u003e\u003ccode\u003e47b2948\u003c/code\u003e\u003c/a\u003e [ENH] Update stars/followers count (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6908\"\u003e#6908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chroma-core/chroma/commit/71afcf0b4294f8fe2d4d1bd2aaaf1ff4f4791446\"\u003e\u003ccode\u003e71afcf0\u003c/code\u003e\u003c/a\u003e [ENH] add MCMR property tests and fix dirty log detection (\u003ca href=\"https://redirect.github.com/chroma-core/chroma/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chroma-core/chroma/compare/0.5.20...1.5.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clickhouse-connect` to 0.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/releases\"\u003eclickhouse-connect's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.15.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\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/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md\"\u003eclickhouse-connect's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.1, 2026-03-30\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse timezone from parameter type hint instead of \u003ccode\u003eserver_tz\u003c/code\u003e when formatting tz-aware datetimes in \u003ccode\u003e{param:Type}\u003c/code\u003e bind expressions. Previously, \u003ccode\u003ebind_query\u003c/code\u003e always converted datetimes to the server timezone, ignoring explicit timezone declarations in type hints like \u003ccode\u003eDateTime64(6, 'UTC')\u003c/code\u003e. This caused incorrect query results when \u003ccode\u003eserver_tz\u003c/code\u003e differed from the hint timezone. Handles \u003ccode\u003eLowCardinality\u003c/code\u003e, \u003ccode\u003eNullable\u003c/code\u003e, and container type wrappers. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/697\"\u003e#697\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.0, 2026-03-26\u003c/h2\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Comprehensive ClickHouse JOIN support via the new \u003ccode\u003ech_join()\u003c/code\u003e helper. All strictness modifiers (\u003ccode\u003eALL\u003c/code\u003e, \u003ccode\u003eANY\u003c/code\u003e, \u003ccode\u003eSEMI\u003c/code\u003e, \u003ccode\u003eANTI\u003c/code\u003e, \u003ccode\u003eASOF\u003c/code\u003e), the \u003ccode\u003eGLOBAL\u003c/code\u003e distribution modifier, and explicit \u003ccode\u003eCROSS JOIN\u003c/code\u003e are now available. Use with \u003ccode\u003eselect_from()\u003c/code\u003e to generate ClickHouse-specific join syntax like \u003ccode\u003eGLOBAL ALL LEFT OUTER JOIN\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/635\"\u003e#635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003earray_join()\u003c/code\u003e now supports multiple columns for parallel array expansion. Pass a list of columns and a matching list of aliases to generate \u003ccode\u003eARRAY JOIN col1 AS a, col2 AS b, col3 AS c\u003c/code\u003e. Single-column usage is unchanged. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/633\"\u003e#633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: \u003ccode\u003ech_join()\u003c/code\u003e now supports \u003ccode\u003eUSING\u003c/code\u003e syntax via the new \u003ccode\u003eusing\u003c/code\u003e parameter. Pass a list of column name strings to generate \u003ccode\u003eUSING (col1, col2)\u003c/code\u003e instead of \u003ccode\u003eON\u003c/code\u003e. This is important for \u003ccode\u003eFULL OUTER JOIN\u003c/code\u003e where \u003ccode\u003eUSING\u003c/code\u003e merges the join column correctly while \u003ccode\u003eON\u003c/code\u003e produces default values (0, '') for unmatched sides. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/636\"\u003e#636\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Add missing Replicated table engine variants: \u003ccode\u003eReplicatedReplacingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedCollapsingMergeTree\u003c/code\u003e, \u003ccode\u003eReplicatedVersionedCollapsingMergeTree\u003c/code\u003e, and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/687\"\u003e#687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazy imports for optional dependencies (numpy, pandas, pyarrow, polars). If installed, these heavy libraries are no longer imported at \u003ccode\u003eimport clickhouse_connect\u003c/code\u003e time. They are only imported when features that need them are actually used. The C/Numpy optimization bridge is also deferred. This speeds up bare import time of \u003ccode\u003eclickhouse-connect\u003c/code\u003e about 4X in environments where all four are installed. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/589\"\u003e#589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003epy.typed\u003c/code\u003e marker file. The package does not have comprehensive type annotations, so the PEP 561 marker was causing false type errors for mypy/pyright users. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/691\"\u003e#691\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003e.final()\u003c/code\u003e and \u003ccode\u003e.sample()\u003c/code\u003e silently overwriting each other when chained. Both methods now store modifiers as custom attributes on the \u003ccode\u003eSelect\u003c/code\u003e instance and render them during compilation, replacing the previous \u003ccode\u003ewith_hint()\u003c/code\u003e approach that only allowed one hint per table. Chaining in either order (e.g. \u003ccode\u003eselect(t).final().sample(0.1)\u003c/code\u003e) correctly produces \u003ccode\u003eFROM t FINAL SAMPLE 0.1\u003c/code\u003e. Also fixes rendering for aliased tables (\u003ccode\u003eFROM t AS u FINAL\u003c/code\u003e) and supports explicit table targeting in joins. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/658\"\u003e#658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003esqlalchemy.values()\u003c/code\u003e to generate ClickHouse's \u003ccode\u003eVALUES\u003c/code\u003e table function syntax. The compiler now emits \u003ccode\u003eVALUES('col1 Type1, col2 Type2', ...)\u003c/code\u003e with the column structure as the first argument, instead of the standard SQL form that places column names after the alias. Generic SQLAlchemy types are mapped to ClickHouse equivalents (e.g. \u003ccode\u003eInteger\u003c/code\u003e to \u003ccode\u003eInt32\u003c/code\u003e, \u003ccode\u003eString\u003c/code\u003e to \u003ccode\u003eString\u003c/code\u003e). Also handles CTE usage by wrapping in \u003ccode\u003eSELECT * FROM VALUES(...)\u003c/code\u003e. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/681\"\u003e#681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fix \u003ccode\u003eGraphiteMergeTree\u003c/code\u003e and \u003ccode\u003eReplicatedGraphiteMergeTree\u003c/code\u003e to properly single-quote the \u003ccode\u003econfig_section\u003c/code\u003e argument as ClickHouse requires.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.1, 2026-03-11\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix JSON and Dynamic column read paths to properly decode shared variant data instead of returning raw binary with discriminator byte prefixes. Shared data values, used when paths exceed \u003ccode\u003emax_dynamic_paths\u003c/code\u003e or types exceed \u003ccode\u003emax_dynamic_types\u003c/code\u003e are now decoded from ClickHouse's binary variant encoding. Scalar types like integers, floats, strings, booleans, and nulls as well as nested objects are now fully decoded. Compound types like Array, Tuple, Map, DateTime, Date, Decimal, and UUID are not yet decoded and will be returned as raw bytes. Fixes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/599\"\u003e#599\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/615\"\u003e#615\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/674\"\u003e#674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSQLAlchemy: Fixed empty ORM/DBAPI SELECT results so \u003ccode\u003ecursor.description\u003c/code\u003e is still populated when ClickHouse Native format returns no data blocks. This restores correct handling for empty result sets, including parameterized and limited queries. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/675\"\u003e#675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore the default Cython runtime path so compiled \u003ccode\u003edriverc\u003c/code\u003e modules are used again unless \u003ccode\u003eCLICKHOUSE_CONNECT_USE_C=0\u003c/code\u003e is set. Fix C/Python parity issues in streaming exception handling, \u003ccode\u003eFixedString\u003c/code\u003e string reads, nullable array helpers, and numpy conversion helpers, and expand CI and unit parity coverage to keep the optimized and pure-Python paths in sync. Addresses \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/676\"\u003e#676\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimplify \u003ccode\u003epivot\u003c/code\u003e in the Cython data conversion module to use \u003ccode\u003etuple(zip(*...))\u003c/code\u003e instead of a manual tuple-building loop which matches the pure-Python implementation and provides significant insert speedup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.0, 2026-03-09\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003eapply_server_timezone\u003c/code\u003e parameter to \u003ccode\u003etz_source\u003c/code\u003e across Client and HttpClient. The new \u003ccode\u003etz_source\u003c/code\u003e parameter accepts string values: \u003ccode\u003e\u0026quot;auto\u0026quot;\u003c/code\u003e (default, was \u003ccode\u003eNone\u003c/code\u003e), \u003ccode\u003e\u0026quot;server\u0026quot;\u003c/code\u003e (was \u003ccode\u003eTrue\u003c/code\u003e or \u003ccode\u003e\u0026quot;always\u0026quot;\u003c/code\u003e), and \u003ccode\u003e\u0026quot;local\u0026quot;\u003c/code\u003e (was \u003ccode\u003eFalse\u003c/code\u003e). The old \u003ccode\u003eapply_server_timezone\u003c/code\u003e parameter is still accepted but emits a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and will be removed in 1.0. Passing both \u003ccode\u003etz_source\u003c/code\u003e and \u003ccode\u003eapply_server_timezone\u003c/code\u003e raises \u003ccode\u003eProgrammingError\u003c/code\u003e. The \u003ccode\u003e\u0026quot;always\u0026quot;\u003c/code\u003e value (which had no distinct runtime behavior from \u003ccode\u003eTrue\u003c/code\u003e) maps to \u003ccode\u003e\u0026quot;server\u0026quot;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRenamed \u003ccode\u003eutc_tz_aware\u003c/code\u003e parameter to \u003ccode\u003etz_mode\u003c/code\u003e across Client, QueryContext, and all query methods. The new \u003ccode\u003etz_mode\u003c/code\u003e parameter accepts string values: \u003ccode\u003e\u0026quot;naive_utc\u0026quot;\u003c/code\u003e (default, was \u003ccode\u003eFalse\u003c/code\u003e), \u003ccode\u003e\u0026quot;aware\u0026quot;\u003c/code\u003e (was \u003ccode\u003eTrue\u003c/code\u003e), and \u003ccode\u003e\u0026quot;schema\u0026quot;\u003c/code\u003e (unchanged). The old \u003ccode\u003eutc_tz_aware\u003c/code\u003e parameter is still accepted but emits a \u003ccode\u003eDeprecationWarning\u003c/code\u003e and will be removed in 1.0. Passing both \u003ccode\u003etz_mode\u003c/code\u003e and \u003ccode\u003eutc_tz_aware\u003c/code\u003e raises \u003ccode\u003eProgrammingError\u003c/code\u003e. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/654\"\u003e#654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eObject('json')\u003c/code\u003e type. This was the legacy experimental JSON type that has been superseded by the new \u003ccode\u003eJSON\u003c/code\u003e type in ClickHouse. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/556\"\u003e#556\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePandas 1.x support is now deprecated and will be removed in v1.0.0. A \u003ccode\u003eDeprecationWarning\u003c/code\u003e is emitted at import time for pandas 1.x users.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for the \u003ccode\u003eSAMPLE\u003c/code\u003e clause in SQLAlchemy statements. Note: Due to a SQLAlchemy limitation, only one hint (SAMPLE or FINAL) can be applied per table; chaining both will silently ignore one. For now, this change enables use of sample(), but chaining with final() is not yet supported.  Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/634\"\u003e#634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExperimental:\u003c/strong\u003e Added Python 3.14 free-threading (cp314t) wheel builds for all platforms. The full test suite currently (as of 2 MAR, 2026) passes under free-threaded Python, but is not added to the CI test matrix at this time nor has it been otherwise tested to any degree. Free-threading support should be considered experimental with no guarantees of correctness at this time. Closes \u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/573\"\u003e#573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.13.0, 2026-02-26\u003c/h2\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBREAKING CHANGE: Implement native write path for \u003ccode\u003eVariant\u003c/code\u003e data type with type-aware dispatching.\nPreviously, all values inserted into a \u003ccode\u003eVariant\u003c/code\u003e column were stringified and sent to the server, which\nwould store them in the \u003ccode\u003eString\u003c/code\u003e member if present, or attempt server-side conversion otherwise. Values\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05ec766c6c336812d1307eb49df33ba954cebb3d\"\u003e\u003ccode\u003e05ec766\u003c/code\u003e\u003c/a\u003e respect bind param tz type hints, bf release 0.15.1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/c4c2a4e2e1a6b1b54eff4e3effda4eab0781b0eb\"\u003e\u003ccode\u003ec4c2a4e\u003c/code\u003e\u003c/a\u003e 0.15.0 release prep (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/cd8cbf48b01ebb68959745aa223f256240d0fe94\"\u003e\u003ccode\u003ecd8cbf4\u003c/code\u003e\u003c/a\u003e Joe/remove pytyped and other small cleanup issues (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/05859efdd18e4ec0d28ae7627b83bb3fd26239be\"\u003e\u003ccode\u003e05859ef\u003c/code\u003e\u003c/a\u003e implement lazy loading of heavy optional deps (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/689\"\u003e#689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/611161f54bcffa42cac313ab5c131e552fc9b2f0\"\u003e\u003ccode\u003e611161f\u003c/code\u003e\u003c/a\u003e SQLAlchemy core improvements (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/5fd16eb13fc9af0861af608bdfd5c717623ae8ba\"\u003e\u003ccode\u003e5fd16eb\u003c/code\u003e\u003c/a\u003e simple ddl support for a few new engine types (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/commit/a0e621c1e413909086e5344dbc56e3cc8a6a57da\"\u003e\u003ccode\u003ea0e621c\u003c/code\u003e\u003c/a\u003e add Peter for reviews (\u003ca href=\"https://redirect.github.com/ClickHouse/clickhouse-connect/issues/682\"\u003e#682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ClickHouse/clickhouse-connect/compare/v0.14.1...v0.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clickzetta-connector-python` to 0.8.109\n\nUpdates `couchbase` to 4.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fab7f5259e72e4533db0ca25cbfa46fac6388db3\"\u003e\u003ccode\u003efab7f52\u003c/code\u003e\u003c/a\u003e PYCBC-1765: Threshold Logging Optimizations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/6362669bc6ba71194353c5a7535dd62416c5205b\"\u003e\u003ccode\u003e6362669\u003c/code\u003e\u003c/a\u003e PYCBC-1764 - Improve how client handles KV operations across the C-extension ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/f317a0fafe626f2efcd9789d2621de8fff90ecb5\"\u003e\u003ccode\u003ef317a0f\u003c/code\u003e\u003c/a\u003e PYCBC-1763: Add checks for span recording for OTel Integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/1305503f4a295b679b210c9304537c510f966630\"\u003e\u003ccode\u003e1305503\u003c/code\u003e\u003c/a\u003e PYCBC-1762: Observability Code Structure Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/7f00efbc66b7bf83ef6aa466daeed6adad740321\"\u003e\u003ccode\u003e7f00efb\u003c/code\u003e\u003c/a\u003e PYCBC-1761: Tracing \u0026amp; Metrics Improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/db77ebffae28ebb317298d6e986f70f3cfe2fa12\"\u003e\u003ccode\u003edb77ebf\u003c/code\u003e\u003c/a\u003e PYCBC-1753: Client is not passing scope_name or bucket_name when using scope ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/d7bfdba616225373ab5c71466fed1d9d9fc8957d\"\u003e\u003ccode\u003ed7bfdba\u003c/code\u003e\u003c/a\u003e PYCBC-1759: Fix compounding encoding span attribute propagation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/b2fc5d9b008113f6ef533d3b285014d7c44e9076\"\u003e\u003ccode\u003eb2fc5d9\u003c/code\u003e\u003c/a\u003e PYCBC-1758: Propagate missing ClusterOptions to C++ core\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/62adf0b6a1b841266d57e65d055a86e6a726227e\"\u003e\u003ccode\u003e62adf0b\u003c/code\u003e\u003c/a\u003e PYCBC-1752: Provide ClusterOption to enable C++ core lazy KV connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/couchbase/couchbase-python-client/commit/fbceef9ed86af073f7f4144b5154a80a52130208\"\u003e\u003ccode\u003efbceef9\u003c/code\u003e\u003c/a\u003e Add typing-extensions dependency for Python versions \u0026lt; 3.13\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/couchbase/couchbase-python-client/compare/4.5.0...4.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `elasticsearch` from 8.14.0 to 9.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/elastic/elasticsearch-py/releases\"\u003eelasticsearch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.3.0\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epack_dense_vector\u003c/code\u003e helper function to pack dense vectors for efficient uploading (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3219\"\u003e#3219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew and updated ES|QL functions in the ES|QL query builder for 9.3 and Serverless (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAPI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ecat.circuit_breaker\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eesql.get_view\u003c/code\u003e, \u003ccode\u003eesql.put_view\u003c/code\u003e and \u003ccode\u003eesql.delete_view\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded experimental \u003ccode\u003eindices.get_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.put_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.delete_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_all_sample_configuration\u003c/code\u003e, \u003ccode\u003eindices.get_sample\u003c/code\u003e, \u003ccode\u003eindices.get_sample_stats\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003einference.put_groq\u003c/code\u003e, \u003ccode\u003einference.put_openshift_ai\u003c/code\u003e, \u003ccode\u003einference.put_nvidia\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edownsampling_method\u003c/code\u003e argument to \u003ccode\u003eindices.put_data_lifecycle\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ereturn_documents\u003c/code\u003e and \u003ccode\u003etop_n\u003c/code\u003e arguments to \u003ccode\u003einference.rerank\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eclose_job\u003c/code\u003e argument to \u003ccode\u003eml.stop_datafeed\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecertificate_identity\u003c/code\u003e to \u003ccode\u003esecurity.create_cross_cluster_api_key\u003c/code\u003e and \u003ccode\u003esecurity.update_cross_cluster_api_key\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServerless-specific\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eproject_routing\u003c/code\u003e argument to \u003ccode\u003eproject.tags\u003c/code\u003e API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDSL\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eNumpyDenseVector\u003c/code\u003e field, with support for dense vectors based on numpy arrays (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eExponentialHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003etime_series_metric\u003c/code\u003e argument to \u003ccode\u003eHistogram\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_disk_rescore\u003c/code\u003e argument from \u003ccode\u003eDenseVectorIndexOptions\u003c/code\u003e type\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eslices\u003c/code\u003e argument to \u003ccode\u003eUpdateByQueryResponse\u003c/code\u003e type\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.2.1\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInstrument ping with OTel (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3160\"\u003e#3160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake positional arguments in DSL generated classes explicit  (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3233\"\u003e#3233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd warnings for private APIs (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3212\"\u003e#3212\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eES|QL query builder: fix missing assignment (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3151\"\u003e#3151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse relative imports to fix \u003ccode\u003eelasticsearch9\u003c/code\u003e package imports (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/pull/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003etransform.get_node_stats\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003erequests_per_second\u003c/code\u003e argument to \u003ccode\u003edelete_by_query_rethrottle\u003c/code\u003e, \u003ccode\u003ereindex_rethrottle\u003c/code\u003e and \u003ccode\u003eupdate_by_query_rethrottle\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eallow_closed\u003c/code\u003e, \u003ccode\u003eallow_no_indices\u003c/code\u003e, \u003ccode\u003eexpand_wildcards\u003c/code\u003e, \u003ccode\u003eignore_throttled\u003c/code\u003e and \u003ccode\u003eignore_available\u003c/code\u003e arguments to \u003ccode\u003ecat.segments\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echunking_settings\u003c/code\u003e argument to \u003ccode\u003einference.put_watsonxai\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eid\u003c/code\u003e argument to \u003ccode\u003eml.stop_trained_model_deployment\u003c/code\u003e API\u003c/li\u003e\n\u003cli\u003eRemoved \u003ccode\u003echunking_settings\u003c/code\u003e argument from \u003ccode\u003einference.put_anthropic\u003c/code\u003e, \u003ccode\u003einference.put_contextualai\u003c/code\u003e, \u003ccode\u003einference.put_deepseek\u003c/code\u003e APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/adae2d6d3d76f3ea75cd758ce64223bd76df45e5\"\u003e\u003ccode\u003eadae2d6\u003c/code\u003e\u003c/a\u003e Release 9.3.0 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3300\"\u003e#3300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ea2227c743d7cacb474efecf4d8b84fa553f9eec\"\u003e\u003ccode\u003eea2227c\u003c/code\u003e\u003c/a\u003e Add Python 3.14 trove classifier (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3296\"\u003e#3296\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3299\"\u003e#3299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b507e3e2d91ff0b6f8fb4a53ea23caa989677436\"\u003e\u003ccode\u003eb507e3e\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3293\"\u003e#3293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/76150204725b1495cad3348c573406fc1f3512d1\"\u003e\u003ccode\u003e7615020\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3280\"\u003e#3280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/ef8d102b3fc4d7572e0fd0bb56afe4291fddc529\"\u003e\u003ccode\u003eef8d102\u003c/code\u003e\u003c/a\u003e Stop using pytz (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3275\"\u003e#3275\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3278\"\u003e#3278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/65870f3504344ba7f67feb7721522bef936a92cf\"\u003e\u003ccode\u003e65870f3\u003c/code\u003e\u003c/a\u003e allow adding elasticsearch query filter for mmr searching (elastic#2638) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/32\"\u003e#32\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/b110f19a49ad492d2d6aa514afaac35360ac3c93\"\u003e\u003ccode\u003eb110f19\u003c/code\u003e\u003c/a\u003e Updates to ES|QL functions for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3266\"\u003e#3266\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3272\"\u003e#3272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/f3d082788f52b5fe3c80926624fa8a61aa4deb37\"\u003e\u003ccode\u003ef3d0827\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3269\"\u003e#3269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/80818cc2640fcdf902919a3dc5500ae945d33271\"\u003e\u003ccode\u003e80818cc\u003c/code\u003e\u003c/a\u003e Auto-generated code for 9.3 (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3262\"\u003e#3262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/elastic/elasticsearch-py/commit/6baa03faedefc90ccbc5f902626cc8cea46aed6a\"\u003e\u003ccode\u003e6baa03f\u003c/code\u003e\u003c/a\u003e Auto-generated API code (\u003ca href=\"https://redirect.github.com/elastic/elasticsearch-py/issues/3252\"\u003e#3252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/elastic/elasticsearch-py/compare/v8.14.0...v9.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 3.1.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvecto-rs` to 0.2.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tensorchord/pgvecto.rs/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymilvus` to 2.6.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/milvus-io/pymilvus/releases\"\u003epymilvus's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMilvus v2.6.12 Release Notes\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efix: default to port 443 for https:// URIs in MilvusClient\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3372\"\u003e#3372\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3374\"\u003e#3374\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3369\"\u003e#3369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: remove duplicate timeout kwarg in Collection.__init__\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3378\"\u003e#3378\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/greenned\"\u003e\u003ccode\u003e@​greenned\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3370\"\u003e#3370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: ensure page_retain_order is passed to search params\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3366\"\u003e#3366\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3383\"\u003e#3383\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/alwayslove2013\"\u003e\u003ccode\u003e@​alwayslove2013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2804\"\u003e#2804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: handle empty result set with ARRAY field in query deserialization\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3389\"\u003e#3389\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3396\"\u003e#3396\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/karsten-reversefashion\"\u003e\u003ccode\u003e@​karsten-reversefashion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3386\"\u003e#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: infer_dtype_bydata returns UNKNOWN for list of strings instead of ARRAY\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3390\"\u003e#3390\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3397\"\u003e#3397\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e — reported by \u003ca href=\"https://github.com/ShirohaUmi\"\u003e\u003ccode\u003e@​ShirohaUmi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/2896\"\u003e#2896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efix: rewrite _version_helper.py to use only public setuptools_scm API\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3359\"\u003e#3359\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3379\"\u003e#3379\u003c/a\u003e) by \u003ca href=\"https://github.com/XuanYang-cn\"\u003e\u003ccode\u003e@​XuanYang-cn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: remove dead code and redundant exception handling in async_grpc_handler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3365\"\u003e#3365\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3377\"\u003e#3377\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: replace redundant raise-from-self with bare raise (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3367\"\u003e#3367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3381\"\u003e#3381\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: fix return type annotations and bare raise in connections.py (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3373\"\u003e#3373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3382\"\u003e#3382\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: remove dead fake_register_link method from GrpcHandler (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3391\"\u003e#3391\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3395\"\u003e#3395\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: bump actions/checkout to v6 and actions/setup-python to v6 (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3400\"\u003e#3400\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/pull/3403\"\u003e#3403\u003c/a\u003e) by \u003ca href=\"https://github.com/pymilvus-bot\"\u003e\u003ccode\u003e@​pymilvus-bot\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/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\"\u003ehttps://github.com/milvus-io/pymilvus/compare/v2.6.11...v2.6.12\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/milvus-io/pymilvus/commit/09307a9ce91a0a27d0e83ce8e43b74e69a7b094e\"\u003e\u003ccode\u003e09307a9\u003c/code\u003e\u003c/a\u003e [Cherry-pick 2.6] ci: bump actions/checkout to v6 and actions/setup-python to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/2dfd20310c9f8a24cd9c3f8977853659917d0442\"\u003e\u003ccode\u003e2dfd203\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: rewrite \u003cem\u003eversion_helper.py to use only public setuptools\u003c/em\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fe3cf6d4201e3839b2655b90bbbc16299e86945\"\u003e\u003ccode\u003e8fe3cf6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: infer_dtype_bydata returns UNKNOWN for list of strings in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/3e531a3aac4bcff96e3828147bd522b20bed5a3d\"\u003e\u003ccode\u003e3e531a3\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: handle empty result set with ARRAY field in query deseria...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/87b0ba2a449a7b1653a385236a6ffe746a2fa04b\"\u003e\u003ccode\u003e87b0ba2\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: remove dead fake_register_link method from GrpcHandl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/aec3ef6738cabf0ede39ae55aa94c76a94379ea1\"\u003e\u003ccode\u003eaec3ef6\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: ensure page_retain_order is passed to search params (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/336\"\u003e#336\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/e27aca78c7dd2de1f749827ce036b83585496af0\"\u003e\u003ccode\u003ee27aca7\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: fix return type annotations and bare raise in connec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/8fff01aa9dabc8242dca98b06b80dbf03bf53617\"\u003e\u003ccode\u003e8fff01a\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor: replace redundant raise-from-self with bare raise (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/18e1610fdbd5d4df23cf240ce469ac184b51b7ab\"\u003e\u003ccode\u003e18e1610\u003c/code\u003e\u003c/a\u003e [Backport 2.6] fix: remove duplicate timeout kwarg in Collection.\u003cstrong\u003einit\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/milvus-io/pymilvus/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/milvus-io/pymilvus/commit/0339212eccb09ae78ce03525d4c61bb10ef76cca\"\u003e\u003ccode\u003e0339212\u003c/code\u003e\u003c/a\u003e [Backport 2.6] refactor(async_grpc_handler): remove dead code and redundant e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/milvus-io/pymilvus/compare/v2.6.10...v2.6.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymochow` from 2.3.6 to 2.4.0\n\nUpdates `pyobvector` to 0.2.26\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oceanbase/pyobvector/releases\"\u003epyobvector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease-v0.2.26\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: import Expression from sqlglot.expressions for sqlglot 30+ by \u003ca href=\"https://github.com/xxsc0529\"\u003e\u003ccode\u003e@​xxsc0529\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/oceanbase/pyobvector/pull/64\"\u003eoceanbase/pyobvector#64\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003ehttps://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\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/oceanbase/pyobvector/blob/main/RELEASE_NOTES.md\"\u003epyobvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.25...release-v0.2.26\"\u003e0.2.26\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e-Fix: Compatible with the latest version of sqlglot\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.24...release-v0.2.25\"\u003e0.2.25\u003c/a\u003e - 2026-03-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: preserve table options when adding sparse vector indexes\u003c/li\u003e\n\u003cli\u003eFeat: ObClient embedded SeekDB support, docs, tests and CI\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.23...release-v0.2.24\"\u003e0.2.24\u003c/a\u003e - 2026-02-05\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: preserve table options when adding sparse vector indexes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.22...release-v0.2.23\"\u003e0.2.23\u003c/a\u003e - 2026-01-29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCchore: intro pre commit\u003c/li\u003e\n\u003cli\u003eFix: make SeekDB version check case-insensitive\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.21...release-v0.2.22\"\u003e0.2.22\u003c/a\u003e - 2026-01-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: HybridSearch.search() crashes when OceanBase returns NULL for empty results\u003c/li\u003e\n\u003cli\u003eFeat: add **kwargs support to create_table_with_index_params for heap organization\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.20...release-v0.2.21\"\u003e0.2.21\u003c/a\u003e - 2026-01-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate tool.poetry section to project section following PEP 518\u003c/li\u003e\n\u003cli\u003euse [dependency-groups] as PEP 735 defined\u003c/li\u003e\n\u003cli\u003eFeat: Add full-text index type support\u003c/li\u003e\n\u003cli\u003eFix typo in word partition\u003c/li\u003e\n\u003cli\u003eAlign required python versions and test on python version matrix\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.19...release-v0.2.20\"\u003e0.2.20\u003c/a\u003e - 2025-11-20\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport seekdb sparse vector index\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.18...release-v0.2.19\"\u003e0.2.19\u003c/a\u003e - 2025-11-10\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SeekDB version check\u003c/li\u003e\n\u003cli\u003eDocs: add hybrid search documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/oceanbase/pyobvector/compare/release-v0.2.17...release-v0.2.18\"\u003e0.2.18\u003c/a\u003e ...\n\n_Description has been truncated_","html_url":"https://github.com/gokool-hiva/Dify-Gokool/pull/34","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokool-hiva%2FDify-Gokool/issues/34","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/34/packages"}},{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":"/docker/elasticsearch","pr_created_at":"2026-04-28T14:19:47.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"4343876692","node_id":"PR_kwDOCZ34ec7WXpZT","number":44165,"state":"open","title":"Bump opensearch-py from 3.1.0 to 3.2.0 in /docker/elasticsearch","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-28T14:19:47.000Z","updated_at":"2026-05-10T11:38:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/docker/elasticsearch","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 3.1.0 to 3.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\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/demisto/dockerfiles/pull/44165","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/demisto%2Fdockerfiles/issues/44165","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/44165/packages"}},{"old_version":"3.1.0","new_version":"3.2.0","update_type":"minor","path":null,"pr_created_at":"2026-04-28T09:07:47.000Z","version_change":"3.1.0 → 3.2.0","issue":{"uuid":"4341899826","node_id":"PR_kwDOL7kQEs7WRHKj","number":1011,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-05T09:06:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-28T09:07:47.000Z","updated_at":"2026-05-05T09:06:48.000Z","time_to_close":604739,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":2,"packages":[{"name":"langchain-core","old_version":"1.3.0","new_version":"1.3.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"opensearch-py","old_version":"3.1.0","new_version":"3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 2 updates in the /lib/rag/layer directory: [langchain-core](https://github.com/langchain-ai/langchain) and [opensearch-py](https://github.com/opensearch-project/opensearch-py).\n\nUpdates `langchain-core` from 1.3.0 to 1.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.3.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36990\"\u003e#36990\u003c/a\u003e)\nfeat(core): add content-block-centric streaming (v2) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36834\"\u003e#36834\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.3.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.3.0\u003c/p\u003e\n\u003cp\u003erelease(core): 1.3.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36972\"\u003e#36972\u003c/a\u003e)\nfeat(core): allow _format_output to pass through list of ToolOutputMixin instances (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36963\"\u003e#36963\u003c/a\u003e)\nchore: bump nbconvert from 7.17.0 to 7.17.1 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36923\"\u003e#36923\u003c/a\u003e)\nfeat(core): Update inheritance behavior for tracer metadata for special keys (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36900\"\u003e#36900\u003c/a\u003e)\nchore: bump langsmith from 0.7.13 to 0.7.31 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36813\"\u003e#36813\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/langchain-ai/langchain/commit/fa0f0d8efa54005b9256f8d4b28d1ff770372901\"\u003e\u003ccode\u003efa0f0d8\u003c/code\u003e\u003c/a\u003e release(core): 1.3.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36990\"\u003e#36990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9ce72eba9f6b3961d469a70b1b1980543f4cca91\"\u003e\u003ccode\u003e9ce72eb\u003c/code\u003e\u003c/a\u003e feat(core): add content-block-centric streaming (v2) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36834\"\u003e#36834\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/889a45b664638ef646fa58257cfe263d44cb6c6a\"\u003e\u003ccode\u003e889a45b\u003c/code\u003e\u003c/a\u003e ci(infra): overlay local \u003ccode\u003elangchain-*\u003c/code\u003e installs for external partners (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36989\"\u003e#36989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ffaac42bf9e345ec1096d38965f36542a7b0467a\"\u003e\u003ccode\u003effaac42\u003c/code\u003e\u003c/a\u003e ci(infra): add \u003ccode\u003epytest-xdist\u003c/code\u003e to partner test groups (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36988\"\u003e#36988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/cc2feb1aea239556fa427fd8bdabbae60f8279a6\"\u003e\u003ccode\u003ecc2feb1\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36982\"\u003e#36982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3dd0ad958eb2d5a51a4055e104598bb26aeb3b65\"\u003e\u003ccode\u003e3dd0ad9\u003c/code\u003e\u003c/a\u003e release(fireworks): 1.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36978\"\u003e#36978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7b09eb7bda4dbe99615ff5e5f74539aea682d718\"\u003e\u003ccode\u003e7b09eb7\u003c/code\u003e\u003c/a\u003e fix(fireworks): honor \u003ccode\u003emax_retries\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36973\"\u003e#36973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/d30ef8a8aa2edd47c614838c6be362456be5c2a5\"\u003e\u003ccode\u003ed30ef8a\u003c/code\u003e\u003c/a\u003e feat(fireworks): populate \u003ccode\u003eusage_metadata\u003c/code\u003e on streaming (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36977\"\u003e#36977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2715a7499a642c99901e6cfe5e9a6ea3aecedb0f\"\u003e\u003ccode\u003e2715a74\u003c/code\u003e\u003c/a\u003e fix(fireworks): swap undeployed Kimi K2 slug in integration tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36975\"\u003e#36975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2d3b49162caca316d9a24286421737471ea9e388\"\u003e\u003ccode\u003e2d3b491\u003c/code\u003e\u003c/a\u003e ci(infra): shorten working-directory dropdown labels (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36974\"\u003e#36974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.3.0...langchain-core==1.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 3.1.0 to 3.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\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/awslabs/LISA/pull/1011","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/1011","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1011/packages"}},{"old_version":"\u003e=2.8.0","new_version":"\u003e=3.2.0","update_type":null,"path":null,"pr_created_at":"2026-04-28T00:23:49.000Z","version_change":"\u003e=2.8.0 → \u003e=3.2.0","issue":{"uuid":"4339675442","node_id":"PR_kwDOR3Iwlc7WJ-Ko","number":75,"state":"open","title":"chore(deps): update opensearch-py requirement from \u003e=2.8.0 to \u003e=3.2.0","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-28T00:23:49.000Z","updated_at":"2026-04-28T00:23:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"opensearch-py","old_version":"\u003e=2.8.0","new_version":"\u003e=3.2.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003eopensearch-project/opensearch-py#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci(linkchecker): remove exclude-mail option by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003eopensearch-project/opensearch-py#987\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange pool.close to pool.terminate by \u003ca href=\"https://github.com/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump codecov/codecov-action from 4 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/opensearch-project/opensearch-py/pull/985\"\u003eopensearch-project/opensearch-py#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003eopensearch-project/opensearch-py#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin doc by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003eopensearch-project/opensearch-py#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix mypy type ignore for untyped decorator in tests by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/993\"\u003eopensearch-project/opensearch-py#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/994\"\u003eopensearch-project/opensearch-py#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact 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/opensearch-project/opensearch-py/pull/989\"\u003eopensearch-project/opensearch-py#989\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 6 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/opensearch-project/opensearch-py/pull/988\"\u003eopensearch-project/opensearch-py#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 7 to 8 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/opensearch-project/opensearch-py/pull/990\"\u003eopensearch-project/opensearch-py#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(docs): use keyword arguments in security API examples by \u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI failures due to API spec updates by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1007\"\u003eopensearch-project/opensearch-py#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump opensearch protobufs - 1.2.0. by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003eopensearch-project/opensearch-py#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AWSV4Signer.sign() not passing headers to AWSRequest by \u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) by \u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\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/ekneg54\"\u003e\u003ccode\u003e@​ekneg54\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003eopensearch-project/opensearch-py#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pigueiras\"\u003e\u003ccode\u003e@​Pigueiras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1004\"\u003eopensearch-project/opensearch-py#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rbhatane\"\u003e\u003ccode\u003e@​rbhatane\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1035\"\u003eopensearch-project/opensearch-py#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JiaxiChris\"\u003e\u003ccode\u003e@​JiaxiChris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003eopensearch-project/opensearch-py#1039\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.1.0...v3.2.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.2.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd dependency on opensearch-protobufs to provide client libraries for gRPC transport (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd ML Commons plugin documentation (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/992\"\u003e#992\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/2954600ddafbd98a1ab9f530054bb1b62380a92a\"\u003eopensearch-api-specification@2954600\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not passing custom headers to \u003ccode\u003eAWSRequest\u003c/code\u003e, causing \u003ccode\u003ex-amz-*\u003c/code\u003e headers to be excluded from SigV4 signature (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAWSV4Signer.sign()\u003c/code\u003e not setting \u003ccode\u003eX-Amz-Content-SHA256\u003c/code\u003e before \u003ccode\u003eSigV4Auth.add_auth()\u003c/code\u003e, causing the header to be absent from \u003ccode\u003eSignedHeaders\u003c/code\u003e in the \u003ccode\u003eAuthorization\u003c/code\u003e header. The fix uses a guarded assignment that preserves caller-provided values (e.g., \u003ccode\u003eUNSIGNED-PAYLOAD\u003c/code\u003e, precomputed hashes) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003elinkchecker\u003c/code\u003e CI step (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/987\"\u003e#987\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=1.2.0 to \u0026lt;=1.3.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/986\"\u003e#986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003ecodecov/codecov-action\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/985\"\u003e#985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eopensearch-protobufs\u003c/code\u003e from 0.19.0 to 1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\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/opensearch-project/opensearch-py/commit/8991792d3fcdfc221c9aef62d7e82c3d15ff0206\"\u003e\u003ccode\u003e8991792\u003c/code\u003e\u003c/a\u003e fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1038\"\u003e#1038\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d8a8c573b2072ec2701819a937fb49702f928192\"\u003e\u003ccode\u003ed8a8c57\u003c/code\u003e\u003c/a\u003e Fix AWSV4Signer.sign() not passing headers to AWSRequest (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6551595d3aa2bee2098825bfe053e47eaf83b0f9\"\u003e\u003ccode\u003e6551595\u003c/code\u003e\u003c/a\u003e Bump opensearch protobufs - 1.2.0. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/94ae31000f1750106895ea18842743050eac24b0\"\u003e\u003ccode\u003e94ae310\u003c/code\u003e\u003c/a\u003e Fix CI failures due to API spec updates (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1007\"\u003e#1007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1ce5b465b4be6ceb3d80982c3aa34de587fce2f2\"\u003e\u003ccode\u003e1ce5b46\u003c/code\u003e\u003c/a\u003e fix(docs): use keyword arguments in security API examples (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/1004\"\u003e#1004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9b6d2404f7cc3c506d5090a7c082bdadc3054b1f\"\u003e\u003ccode\u003e9b6d240\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/990\"\u003e#990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/02c5dcc904f40ad1b70822d3cba6c8163079d2d2\"\u003e\u003ccode\u003e02c5dcc\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/988\"\u003e#988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/fa8a8622b99246a1f3987b25153b9139dd201902\"\u003e\u003ccode\u003efa8a862\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/989\"\u003e#989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/f5ef69417c42bd151304434d829e38a97e395d38\"\u003e\u003ccode\u003ef5ef694\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/10ab79200dfcf22a14e99b64e31a5d2e393a641e\"\u003e\u003ccode\u003e10ab792\u003c/code\u003e\u003c/a\u003e ci: fix mypy type ignore for untyped decorator in tests (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/993\"\u003e#993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.2.0\"\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/aenealabs/aura/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aenealabs%2Faura/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-04-17T16:35:02.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"4284024828","node_id":"PR_kwDOLvDAr87TYleW","number":433,"state":"closed","title":"Bump the production-dependencies group across 2 directories with 9 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-01T14:52:25.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-17T16:35:02.000Z","updated_at":"2026-05-01T14:52:27.000Z","time_to_close":1203443,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":9,"packages":[{"name":"apscheduler","old_version":"3.11.0","new_version":"3.11.2","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"newspaper4k","old_version":"0.9.3.1","new_version":"0.9.5","repository_url":"https://github.com/AndyTheFactory/newspaper4k"},{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pypdf","old_version":"6.7.1","new_version":"6.10.2","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"scrapy","old_version":"2.14.1","new_version":"2.15.0","repository_url":"https://github.com/scrapy/scrapy"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [apscheduler](https://github.com/agronholm/apscheduler), [newspaper4k](https://github.com/AndyTheFactory/newspaper4k), [opensearch-py](https://github.com/opensearch-project/opensearch-py), [pypdf](https://github.com/py-pdf/pypdf), [python-dotenv](https://github.com/theskumar/python-dotenv), [python-json-logger](https://github.com/nhairs/python-json-logger), [redis](https://github.com/redis/redis-py), [scrapy](https://github.com/scrapy/scrapy) and [spidermon](https://github.com/scrapinghub/spidermon) to permit the latest version.\nUpdates `apscheduler` from 3.11.0 to 3.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003escheduler.shutdown()\u003c/code\u003e not raising \u003ccode\u003eSchedulerNotRunning\u003c/code\u003e (or raising the wrong exception) for asynchronous schedulers when the scheduler is in fact not running\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCronTrigger\u003c/code\u003e sticking on a folded datetime during the fall-back DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003eagronholm/apscheduler#1021\u003c/a\u003e\u0026gt;_; PR by \u003ca href=\"https://github.com/berianjames\"\u003e\u003ccode\u003e@​berianjames\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/agronholm/apscheduler/commit/0f70950e320f3a7924dcd404c6c379143fb68b23\"\u003e\u003ccode\u003e0f70950\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/bc404e63af18bd8e493e0765f2ad0b51e6df0ef1\"\u003e\u003ccode\u003ebc404e6\u003c/code\u003e\u003c/a\u003e Updated publish actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c3aa155bd39fe54639d69b396f9ad720246f0c98\"\u003e\u003ccode\u003ec3aa155\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ad6b2dc766cd6722c8aa51543f988b9ee7b13110\"\u003e\u003ccode\u003ead6b2dc\u003c/code\u003e\u003c/a\u003e Added fix for get_next_fire_time not advancing through fold with unfolded pre...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/f4df139771b7741f58f0eb456f091d3f659555c1\"\u003e\u003ccode\u003ef4df139\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/25be7b77afca892d152441d4a61402623af7f943\"\u003e\u003ccode\u003e25be7b7\u003c/code\u003e\u003c/a\u003e Fixed CronTrigger getting stuck on fallback DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1079\"\u003e#1079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/12613862e34456215dc98574f6cf594f77d66f47\"\u003e\u003ccode\u003e1261386\u003c/code\u003e\u003c/a\u003e Updated etcd image repository name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/b1f5636ccaf6a2fe86b208d7bd6b43024a1546b3\"\u003e\u003ccode\u003eb1f5636\u003c/code\u003e\u003c/a\u003e Fixed shutdown() not raising the correct exception for some schedulers\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.11.0...3.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `newspaper4k` from 0.9.3.1 to 0.9.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/blob/master/CHANGELOG.md\"\u003enewspaper4k's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e0.9.5 (2026-02-28)\u003c/h3\u003e\n\u003ch2\u003eUnreleased (2026-02-28)\u003c/h2\u003e\n\u003ch3\u003eNew feature:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003elang\u003c/strong\u003e: Add ISO 639-3 language code support for Kurdish (ckb, kmr) (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/691\"\u003e#691\u003c/a\u003e)(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/253dd550fd4c06d2bc8aebad6ee9fc6e33178ec7\"\u003e\u003ccode\u003e253dd55\u003c/code\u003e\u003c/a\u003e) (by Muzaffer Cikay)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests\u003c/strong\u003e: :sparkles: add robots tests(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/030e50d2f41f77e139030ad8374342ed1e36f398\"\u003e\u003ccode\u003e030e50d\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: added robots.txt check with hook in do_request(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/62dece9ece919c1947a06843c59fdd86d9a45ea9\"\u003e\u003ccode\u003e62dece9\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: add hooks to get_html(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/708cc10ff43c1d0dff48860673677aaa9f473d7d\"\u003e\u003ccode\u003e708cc10\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparse\u003c/strong\u003e: prioritize \u003ccode\u003edatePublished\u003c/code\u003e over \u003ccode\u003edateCreated\u003c/code\u003e in JSON-LD extraction(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/cdadb9ec48fe19e4f0c35478bdd4420c14d73084\"\u003e\u003ccode\u003ecdadb9e\u003c/code\u003e\u003c/a\u003e) (by Pontus Svensson)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Readme improvements(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/18ca21c888da17e94e3d4320e25e360ff24cb530\"\u003e\u003ccode\u003e18ca21c\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: add \u003ccode\u003enltk\u003c/code\u003e as an optional dependency for leaner deployments (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/e0734594ea64f3904fb374ab27de563b94565c0b\"\u003e\u003ccode\u003ee073459\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: added additional documentation for GoogleNews and Cloudscraper integration (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/aceb8535932938c7c44f7ce3f35c9deb87b4e0e6\"\u003e\u003ccode\u003eaceb853\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erework\u003c/strong\u003e: type annotations removed deprecated types (python 3.10+) (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/bd82a41225bdc9a883c0f9f2da1fec178cc8aa81\"\u003e\u003ccode\u003ebd82a41\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip null entries in JSON-LD arrays during extraction, fix \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/692\"\u003e#692\u003c/a\u003e(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/77d6cccf27dc94db47e1d83d944473e6a805c35d\"\u003e\u003ccode\u003e77d6ccc\u003c/code\u003e\u003c/a\u003e) (by ghxm)\u003c/li\u003e\n\u003cli\u003eArticleException f-string not interpolating status_code (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/684\"\u003e#684\u003c/a\u003e)(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/7caa2a5e7efb25d3e8c898540322a995ff1c6168\"\u003e\u003ccode\u003e7caa2a5\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003eadded alias to memorized_articles(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/fa9c5424d75e3c4f4001e7ac4bfd0a816b473a4b\"\u003e\u003ccode\u003efa9c542\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003eaccept relative paths for categories(\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/667\"\u003e#667\u003c/a\u003e) (by BRNMan)\u003c/li\u003e\n\u003cli\u003eimprove type annotations+isort(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/7744e172f2c6ef4f7fadd1a1c4675c730836da90\"\u003e\u003ccode\u003e7744e17\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003euse w3lib to detect webpage encoding(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/3bd4f006301aa8a83b723881db133564e61268ee\"\u003e\u003ccode\u003e3bd4f00\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003esource tests(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/9434dde41e3d23396c3e345443a58a56ae2101a3\"\u003e\u003ccode\u003e9434dde\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003esmall things(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/e02872efb0f82556d4a64c91d642b10eb4e915f2\"\u003e\u003ccode\u003ee02872e\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003efix google news handling of language setting (\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/0ebaabfab31ad89a99eb8860bd580b61eff482aa\"\u003e\u003ccode\u003e0ebaabf\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebump gnews version and tests(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/26439c9dbb428b7dd8cf7ac22b5de9b53c73553a\"\u003e\u003ccode\u003e26439c9\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.9.4.1 (2025-11-18)\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efeat\u003c/strong\u003e: add support for python 3.14\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erework\u003c/strong\u003e: minor typing changes\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests\u003c/strong\u003e: increase test coverage\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003elang\u003c/strong\u003e: add Kurdish Kurmanji stopwords (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/677\"\u003e#677\u003c/a\u003e) (by cikay)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: update supported languages (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/676\"\u003e#676\u003c/a\u003e) (by cikay)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: bump sphinx version (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/680\"\u003e#680\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Docs 0.9.4 (\u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/pull/681\"\u003e#681\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.9.4 (2025-11-15)\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cp\u003eBumped min Python version to 3.10. Version 3.8 and 3.9 are no longer supported, but might still work.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003emisc\u003c/strong\u003e: switch to uv from poetry(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/234507640e3594e5895cc541b26f194f1076aa87\"\u003e\u003ccode\u003e2345076\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eparse\u003c/strong\u003e: add brotli compression(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/6ff72bdf60c736b5d59e2f254dda053fd9f7599b\"\u003e\u003ccode\u003e6ff72bd\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einstall\u003c/strong\u003e: dependency versions pin(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/10cae21ebf3e9a261ac8e6012aed0882880972f6\"\u003e\u003ccode\u003e10cae21\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etyping\u003c/strong\u003e: update type hint for data parameter to allow None(\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/80279d16849d211625d7d22b86bc2d01110346b9\"\u003e\u003ccode\u003e80279d1\u003c/code\u003e\u003c/a\u003e) (by Andrei)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/9fdb4cedde14f336fc4599dc419cbf9a06d10d25\"\u003e\u003ccode\u003e9fdb4ce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/708\"\u003e#708\u003c/a\u003e from AndyTheFactory/pre-0.9.5-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/3fc6f5d849d3e7b5f2fe91f46f917f27420eb942\"\u003e\u003ccode\u003e3fc6f5d\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/e7d24de5b07bb6bfd071ab3fa85023e9ffb3c003\"\u003e\u003ccode\u003ee7d24de\u003c/code\u003e\u003c/a\u003e feat: bump version to 0.9.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/2bf6fc5322c111abf8c79dfdbb790043f1fc117b\"\u003e\u003ccode\u003e2bf6fc5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/707\"\u003e#707\u003c/a\u003e from AndyTheFactory/pre-0.9.5-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/8ec447d7de504fa18e4ab9dd9a6b500308f25e6a\"\u003e\u003ccode\u003e8ec447d\u003c/code\u003e\u003c/a\u003e feat: bump version to 0.9.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/93e4814338cdfba71d33f092c54d9d29995dc629\"\u003e\u003ccode\u003e93e4814\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/AndyTheFactory/newspaper4k/issues/706\"\u003e#706\u003c/a\u003e from AndyTheFactory/pre-0.9.5-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/eab2b6154ea8658bd313c828c7bf6b6e17bf73aa\"\u003e\u003ccode\u003eeab2b61\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/a2e3f97b9d12d3294b44b856d54f627bdcb58947\"\u003e\u003ccode\u003ea2e3f97\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/5216b2435715f5a15e898392688313977955baa8\"\u003e\u003ccode\u003e5216b24\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/commit/77260b727dabdbe8032341f7ca48d38f1da70537\"\u003e\u003ccode\u003e77260b7\u003c/code\u003e\u003c/a\u003e Merge branch 'pre-0.9.5-release' of \u003ca href=\"https://github.com/AndyTheFactory/newspap\"\u003ehttps://github.com/AndyTheFactory/newspap\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AndyTheFactory/newspaper4k/compare/0.9.3.1...0.9.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.7.1 to 6.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e) by \u003ca href=\"https://github.com/Ygnas\"\u003e\u003ccode\u003e@​Ygnas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e) by \u003ca href=\"https://github.com/j-t-1\"\u003e\u003ccode\u003e@​j-t-1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e) by \u003ca href=\"https://github.com/rassie\"\u003e\u003ccode\u003e@​rassie\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e) by \u003ca href=\"https://github.com/astahlman\"\u003e\u003ccode\u003e@​astahlman\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e) by \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.10.2, 2026-04-15\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.1...6.10.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.1, 2026-04-14\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConsider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse new parameter names for compress_identical_objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.10.0...6.10.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.10.0, 2026-04-10\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisallow custom XML entity declarations for XMP metadata (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3724\"\u003e#3724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSkip MD5 key derivation for AES-256 encrypted PDFs (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3694\"\u003e#3694\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse remove_orphans in compress_identical_objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3310\"\u003e#3310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix PdfReadError when xref table contains comments before trailer (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3710\"\u003e#3710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly verify AES padding during decryption (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3699\"\u003e#3699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix stale object cache from non-authoritative object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3698\"\u003e#3698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix extract_links pairing when annotations include non-links (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3687\"\u003e#3687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AI policy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.2...6.10.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.9.2, 2026-03-23\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid infinite loop in read_from_stream for broken files (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3693\"\u003e#3693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve UnboundLocalError for xobjs in _get_image (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3684\"\u003e#3684\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.9.1...6.9.2\"\u003eFull Changelog\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/py-pdf/pypdf/commit/c476b4f293c8ef4cac07dfb755e5582d838fcdc0\"\u003e\u003ccode\u003ec476b4f\u003c/code\u003e\u003c/a\u003e REL: 6.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c50a0104cf083356f7c7f5d61410466a57f5c88a\"\u003e\u003ccode\u003ec50a010\u003c/code\u003e\u003c/a\u003e SEC: Do not rely on possibly invalid /Size for incremental cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3735\"\u003e#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ac734dab4eef92bcce50d503949b4d9887d89f11\"\u003e\u003ccode\u003eac734da\u003c/code\u003e\u003c/a\u003e SEC: Introduce limits for FlateDecode parameters and image decoding (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3734\"\u003e#3734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/b49e7eb45422c19b68ac59c51b7699409e74d44e\"\u003e\u003ccode\u003eb49e7eb\u003c/code\u003e\u003c/a\u003e REL: 6.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/62338e9d36419cf193ccec7331784f45df1d70b3\"\u003e\u003ccode\u003e62338e9\u003c/code\u003e\u003c/a\u003e SEC: Limit the allowed size of xref and object streams (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/5dcc0aebaa2c732028ea8def2eb9982e324b7c11\"\u003e\u003ccode\u003e5dcc0ae\u003c/code\u003e\u003c/a\u003e DEV: Update pytest-benchmark to 5.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/b42e4aa98ae5c7fdd02558d165d39fe639fdf97d\"\u003e\u003ccode\u003eb42e4aa\u003c/code\u003e\u003c/a\u003e DEV: Update pinned pillow and pytest where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/717446b1218a3eb236cb47d1bae2b68451ccb6c0\"\u003e\u003ccode\u003e717446b\u003c/code\u003e\u003c/a\u003e ROB: Consider strict mode setting for decryption errors (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9e461d361b9004da68fc8e6acc4308cce68aa304\"\u003e\u003ccode\u003e9e461d3\u003c/code\u003e\u003c/a\u003e DEV: Bump softprops/action-gh-release from 2 to 3 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3730\"\u003e#3730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/500d09d92fa80a6f1fcdfa46656893efd05e91ff\"\u003e\u003ccode\u003e500d09d\u003c/code\u003e\u003c/a\u003e TST: Update \u003ccode\u003etest_embedded_file__basic\u003c/code\u003e to use \u003ccode\u003etmp_path\u003c/code\u003e fixture (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3726\"\u003e#3726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.7.1...6.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.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\u003c/blockquote\u003e\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.1.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 `python-json-logger` from 3.3.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0.rc1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0.rc1\"\u003e4.0.0.rc1\u003c/a\u003e - 2025-09-07\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` 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/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow newer PyJWT versions for branch 5.3 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3682\"\u003e#3682\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/bcmills\"\u003e\u003ccode\u003e@​bcmills\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/8f297c2c853b69a63fb1c0ede5a0c507636a5068\"\u003e\u003ccode\u003e8f297c2\u003c/code\u003e\u003c/a\u003e Updating library version for 5.3.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/cf81e16f585d1c036ddbbb53ba2063327cfd2a6c\"\u003e\u003ccode\u003ecf81e16\u003c/code\u003e\u003c/a\u003e Allow newer PyJWT versions (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3682\"\u003e#3682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/653d9ef00fc687e72c0bb065d2c61c664b13b63b\"\u003e\u003ccode\u003e653d9ef\u003c/code\u003e\u003c/a\u003e flake8-isort version is set to 6.1.1 - to be compatible with python 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46740c88e1f95a33d900844737bee4e7df5432dd\"\u003e\u003ccode\u003e46740c8\u003c/code\u003e\u003c/a\u003e Replacing the redis and redis-stack-server images with redis-libs-tests image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/1c0a6f21250f44326dff217b960169b9d1fd0e71\"\u003e\u003ccode\u003e1c0a6f2\u003c/code\u003e\u003c/a\u003e Fix flake version to the last known working with our code. Since flake is no ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/a33663958d42e698069962e260260c80fd093162\"\u003e\u003ccode\u003ea336639\u003c/code\u003e\u003c/a\u003e Fixing linter errors - dues to backporting from master where formatter is upd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b928f971b4936eb6dfca5a32c3085a419a3a50a6\"\u003e\u003ccode\u003eb928f97\u003c/code\u003e\u003c/a\u003e Remove decreasing of created connections count when releasing not owned by co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/35ca1025f2961eeb498335f8066d6596c87421c3\"\u003e\u003ccode\u003e35ca102\u003c/code\u003e\u003c/a\u003e Fixing the versions of some deprecations that wrongly added as 5.0.3 - the co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/53dba14ac9f68db0b5ce34076bb1f8b9e2c6fcbe\"\u003e\u003ccode\u003e53dba14\u003c/code\u003e\u003c/a\u003e Exponential with jitter backoff (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3550\"\u003e#3550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/eb91d4fa6659f2fe67b2232da9dc800b7b4f21ad\"\u003e\u003ccode\u003eeb91d4f\u003c/code\u003e\u003c/a\u003e Adding load balancing strategy configuration to cluster clients(replacement f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v5.2.1...v5.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scrapy` from 2.14.1 to 2.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/scrapy/releases\"\u003escrapy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental support for running without a Twisted reactor\u003c/li\u003e\n\u003cli\u003eExperimental \u003ccode\u003ehttpx\u003c/code\u003e-based download handler\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.scrapy.org/en/latest/news.html#scrapy-2-15-0-2026-04-09\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.14.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eValues from the \u003ccode\u003eReferrer-Policy\u003c/code\u003e header of HTTP responses are no longer executed as Python callables. See the \u003ca href=\"https://github.com/scrapy/scrapy/security/advisories/GHSA-cwxj-rr6w-m6w7\"\u003ecwxj-rr6w-m6w7\u003c/a\u003e security advisory for details.\u003c/li\u003e\n\u003cli\u003eIn line with the \u003ca href=\"https://fetch.spec.whatwg.org/#http-redirect-fetch\"\u003estandard\u003c/a\u003e, 301 redirects of POST requests are converted into GET requests.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.scrapy.org/en/latest/news.html#scrapy-2-14-2-2026-03-12\"\u003eFull Changelog\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/scrapy/scrapy/blob/master/docs/news.rst\"\u003escrapy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScrapy 2.15.0 (2026-04-09)\u003c/h2\u003e\n\u003cp\u003eHighlights:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eExperimental support for running without a Twisted reactor\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExperimental \u003ccode\u003ehttpx\u003c/code\u003e-based download handler\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackward-incompatible changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n-   The built-in HTTP :ref:`download handlers \u0026lt;download-handlers-ref\u0026gt;` now\n    raise Scrapy-specific exceptions instead of implementation-specific ones,\n    see :ref:`download-handlers-exceptions`. This can affect user code that\n    handles downloader exceptions, such as ``process_exception()`` methods of\n    custom :ref:`downloader middlewares \u0026lt;topics-downloader-middleware-custom\u0026gt;`.\n    (:issue:`7208`)\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn order to fix a long-standing bug with handling of asynchronous storages,\u003cbr /\u003e\nthe following changes were made to media pipeline classes, which can impact\u003cbr /\u003e\nsome of the user code that subclasses them or calls their methods directly:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eoverrides of :meth:\u003ccode\u003escrapy.pipelines.media.MediaPipeline.media_downloaded\u003c/code\u003e\u003cbr /\u003e\nand :meth:\u003ccode\u003e~sc...\n\n_Description has been truncated_","html_url":"https://github.com/GSA-TTS/searchgov-spider/pull/433","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GSA-TTS%2Fsearchgov-spider/issues/433","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/433/packages"}},{"old_version":"2.8.0","new_version":"3.1.0","update_type":"major","path":null,"pr_created_at":"2026-02-10T00:00:02.000Z","version_change":"2.8.0 → 3.1.0","issue":{"uuid":"3918736506","node_id":"PR_kwDOHUSeqs7CmuGz","number":437,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 21 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-10T00:00:02.000Z","updated_at":"2026-02-10T00:05:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":21,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.9.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.2","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-httpserver","old_version":"1.1.3","new_version":"1.1.4","repository_url":"https://github.com/csernazs/pytest-httpserver"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.4"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.0","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.9.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-httpserver](https://github.com/csernazs/pytest-httpserver) | `1.1.3` | `1.1.4` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.4` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.0` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.9.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082\"\u003e08bc7082\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29b\"\u003e0e5ec29b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649f\"\u003e1917649f\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa5\"\u003e2bc15fa5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5\"\u003e2e1a1eb5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a\"\u003e5ac2808a\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc5\"\u003e74c9ecc5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469\"\u003e7b319469\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe\"\u003e8e21a7fe\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b\"\u003ec8dd7a0b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486b\"\u003ecdb2486b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3\"\u003edbd162b3\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b8\"\u003edbe9d8b8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8\"\u003eea0f5bf8\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\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396\"\u003e2ef63396\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1\"\u003e5d9fafe1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794\"\u003e6c160794\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd\"\u003e721ea2dd\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.8.0...v3.9.0\"\u003e3.9.0\u003c/a\u003e (2026-02-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e0e5ec29bc6a31b77bcfba4254cef5bffb199095c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003ec8dd7a0b124c395b7b60189ee78f47aba8d51f7d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e08bc7082db7392f13bc8c51511b4afa9c7b157c9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e74c9ecc54173420bfcd48498a8956088a035af50\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e7b319469d2e495ea0bf7367f3949190e8f5d9fff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e8e21a7fe54d0a043f31937671003630a1985a5d2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd context manager to mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1724\"\u003e#1724\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ac2808a69195c688ed42c3604d4bfadbb602a66\"\u003e5ac2808a69195c688ed42c3604d4bfadbb602a66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintegrate writes strategy and appendable object writer (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbd162b3583e32e6f705a51f5c3fef333a9b89d0\"\u003edbd162b3583e32e6f705a51f5c3fef333a9b89d0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for opening via \u003ccode\u003ewrite_handle\u003c/code\u003e and fix \u003ccode\u003ewrite_handle\u003c/code\u003e type (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1715\"\u003e#1715\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2bc15fa570683ba584230c51b439d189dbdcd580\"\u003e2bc15fa570683ba584230c51b439d189dbdcd580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for writes comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1707\"\u003e#1707\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/dbe9d8b89d975dfbed8c830a5687ccfafea51d5f\"\u003edbe9d8b89d975dfbed8c830a5687ccfafea51d5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd micro-benchmarks for reads comparing standard (regional) vs rapid (zonal) buckets. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1697\"\u003e#1697\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1917649fac41481da1adea6c2a9f4ab1298a34c4\"\u003e1917649fac41481da1adea6c2a9f4ab1298a34c4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esend \u003ccode\u003euser_agent\u003c/code\u003e to grpc channel (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1712\"\u003e#1712\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cdb2486bb051dcbfbffc2510aff6aacede5e54d3\"\u003ecdb2486bb051dcbfbffc2510aff6aacede5e54d3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1705\"\u003e#1705\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd samples for appendable objects writes and reads (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\"\u003e2e1a1eb5cbe1c909f1f892a0cc74fe63c8ef36ff\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to avoid overwriting existing objects and add \u003ccode\u003eis_stream_open\u003c/code\u003e support  (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1709\"\u003e#1709\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for \u003ccode\u003egeneration=0\u003c/code\u003e to prevent overwriting existing objects (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eis_stream_open\u003c/code\u003e property to AsyncAppendableObjectWriter for stream status check (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\"\u003eea0f5bf8316f4bfcff2728d9d1baa68dde6ebdae\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereceive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange contructors of MRD and AAOW AsyncGrpcClient.grpc_client to AsyncGrpcClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1727\"\u003e#1727\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003ee730bf50c4584f737ab86b2e409ddb27b40d2cec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einstance grpc client once per process in benchmarks (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\"\u003e721ea2dd6c6db2aa91fd3b90e56a831aaaa64061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate write handle on every recv() (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1716\"\u003e#1716\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5d9fafe1466b5ccb1db4a814967a5cc8465148a2\"\u003e5d9fafe1466b5ccb1db4a814967a5cc8465148a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting in setup.py dependencies list (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1713\"\u003e#1713\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/cc4831d7e253b265b0b96e08b5479f4c759be442\"\u003ecc4831d7e253b265b0b96e08b5479f4c759be442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1700\"\u003e#1700\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement requests_done method to signal end of requests in async streams. Gracefully close streams. (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6c160794afded5e8f4179399f1fe5248e32bf707\"\u003e6c160794afded5e8f4179399f1fe5248e32bf707\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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/googleapis/python-storage/commit/77c1edaa6de4058e545ad1b68bde5507b75b8e37\"\u003e\u003ccode\u003e77c1eda\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260202T123858Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1736\"\u003e#1736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e5ec29bc6a31b77bcfba4254cef5bffb199095c\"\u003e\u003ccode\u003e0e5ec29\u003c/code\u003e\u003c/a\u003e feat: add get_object method for async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1735\"\u003e#1735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7a00dfb73696d6db98747509e9f2f2bd0c94c53a\"\u003e\u003ccode\u003e7a00dfb\u003c/code\u003e\u003c/a\u003e chore: Add README for running zonal buckets samples (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ef63396dca1c36f9b0f0f3cf87a61b5aa4bd465\"\u003e\u003ccode\u003e2ef6339\u003c/code\u003e\u003c/a\u003e fix: receive eof while closing reads stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1733\"\u003e#1733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c8dd7a0b124c395b7b60189ee78f47aba8d51f7d\"\u003e\u003ccode\u003ec8dd7a0\u003c/code\u003e\u003c/a\u003e feat: expose \u003ccode\u003eDELETE_OBJECT\u003c/code\u003e   in \u003ccode\u003eAsyncGrpcClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1718\"\u003e#1718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/08bc7082db7392f13bc8c51511b4afa9c7b157c9\"\u003e\u003ccode\u003e08bc708\u003c/code\u003e\u003c/a\u003e feat: update generation for MRD (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1730\"\u003e#1730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/74c9ecc54173420bfcd48498a8956088a035af50\"\u003e\u003ccode\u003e74c9ecc\u003c/code\u003e\u003c/a\u003e feat: Move Zonal Buckets features of \u003ccode\u003e_experimental\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1728\"\u003e#1728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/7b319469d2e495ea0bf7367f3949190e8f5d9fff\"\u003e\u003ccode\u003e7b31946\u003c/code\u003e\u003c/a\u003e feat: add default user agent for grpc (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/e730bf50c4584f737ab86b2e409ddb27b40d2cec\"\u003e\u003ccode\u003ee730bf5\u003c/code\u003e\u003c/a\u003e fix!: Change contructors of MRD and AAOW AsyncGrpcClient.grpc_client to Async...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/8e21a7fe54d0a043f31937671003630a1985a5d2\"\u003e\u003ccode\u003e8e21a7f\u003c/code\u003e\u003c/a\u003e feat: expose finalized_time in blob.py applicable for GET_OBJECT in ZB (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1719\"\u003e#1719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (e...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/437","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/437","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/437/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2026-02-09T21:52:43.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3918324195","node_id":"PR_kwDOKzAd5M7ClV98","number":58,"state":"open","title":"deps(deps): bump opensearch-py from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-09T21:52:43.000Z","updated_at":"2026-02-09T21:52:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/MysterionRise/adaptive-knowledge-graph/pull/58","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MysterionRise%2Fadaptive-knowledge-graph/issues/58","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/58/packages"}},{"old_version":"2.8.0","new_version":"3.1.0","update_type":"major","path":null,"pr_created_at":"2026-01-26T22:40:03.000Z","version_change":"2.8.0 → 3.1.0","issue":{"uuid":"3857982199","node_id":"PR_kwDOHUSeqs6_eFIV","number":436,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["approved","size/M","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-26T22:40:03.000Z","updated_at":"2026-01-26T22:50:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":20,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.8.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.26","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.39.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.2","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.2.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.13.2"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"setuptools","old_version":"80.9.0","new_version":"80.10.2","repository_url":"https://github.com/pypa/setuptools"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.8.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.26` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.39.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.2` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.2.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `3.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.4.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.34.1` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/coveragepy/coveragepy) | `7.8.2` | `7.13.2` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.19.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `80.10.2` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage 3.8.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961be\"\u003e0e2961be\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eimplement \u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e;append_from_file\u0026amp;\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/34\"\u003e#34\u003c/a\u003e; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956\"\u003e1333c956\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb\"\u003e139390cb\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5\"\u003e89bfe7a5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec\"\u003ea57ea0ec\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee0\"\u003ed90f0ee0\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf\"\u003ef7095faf\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\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16\"\u003e2d5a7b16\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b\"\u003e4a609a4b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711da\"\u003e6dc711da\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.7.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebucket:\u003c/strong\u003e Move blob fails when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.6.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.7.0...v3.8.0\"\u003e3.8.0\u003c/a\u003e (2026-01-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eflush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e89bfe7a5fcd0391da35e9ceccc185279782b5420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003ea57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003ed90f0ee09902a21b186106bcf0a8cb0b81b34340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimplement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e1333c956da18b4db753cda98c41c3619c84caf69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake flush size configurable (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1677\"\u003e#1677\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/f7095faf0a81239894ff9d277849788b62eb6ac5\"\u003ef7095faf0a81239894ff9d277849788b62eb6ac5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecompute chunk wise checksum for bidi_writes (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1675\"\u003e#1675\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/139390cb01f93a2d61e7ec201e3637dffe0b2a34\"\u003e139390cb01f93a2d61e7ec201e3637dffe0b2a34\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexpose persisted size in mrd (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1671\"\u003e#1671\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/0e2961bef285fc064174a5c18e3db05c7a682521\"\u003e0e2961bef285fc064174a5c18e3db05c7a682521\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd system test for opening with read_handle (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1672\"\u003e#1672\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\"\u003e6dc711dacd4d38c573aa4ca9ad71fe412c0e49c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eno state lookup while opening bidi-write stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2d5a7b16846a69f3a911844971241899f60cce14\"\u003e2d5a7b16846a69f3a911844971241899f60cce14\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose write object stream always (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1661\"\u003e#1661\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4a609a4b3f4ba1396825911cb02f8a9649135cd5\"\u003e4a609a4b3f4ba1396825911cb02f8a9649135cd5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.6.0...v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-12-09)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAuto enable mTLS when supported certificates are detected (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1637\"\u003e#1637\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/4e91c541363f0e583bf9dd1b81a95ff2cb618bac\"\u003e4e91c54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend entire object checksum in the final api call of resumable upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1654\"\u003e#1654\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ddce7e53a13e6c0487221bb14e88161da7ed9e08\"\u003eddce7e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport urllib3 \u0026gt;= 2.6.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1658\"\u003e#1658\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/57405e956a7ca579b20582bf6435cec42743c478\"\u003e57405e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/googleapis/python-storage/blob/57405e956a7ca579b20582bf6435cec42743c478/google/cloud/storage/bucket.py#L2256\"\u003emove_blob\u003c/a\u003e failure when the new blob name contains characters that need to be url encoded (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1605\"\u003e#1605\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ec470a270e189e137c7229cc359367d5a897cdb9\"\u003eec470a2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.5.0...v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-11-17)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for partial list buckets (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1606\"\u003e#1606\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/92fc2b00429415b9fbe7cba0167778eee60449e2\"\u003e92fc2b0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake return_partial_success and unreachable fields public for list Bucket (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/323cddd5d439e04e12614106eab1928fd4008c0b\"\u003e323cddd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ezb-experimental:\u003c/strong\u003e Add async write object stream (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1612\"\u003e#1612\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5ab81032268e875f82a66431d666fe61c9eb394b\"\u003e5ab8103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDont pass credentials to StorageClient (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/195d644c4d4feec98e9a9cd9fad67fc774c50dc8\"\u003e195d644\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.4.1...v3.5.0\"\u003e3.5.0\u003c/a\u003e (2025-11-05)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/16cf512c2e05a6eb0e4ba7280814886e35b2942b\"\u003e\u003ccode\u003e16cf512\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260113T144551Z (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/94ad8952cecfbfaf0e7917fbf4a362f4996f0c78\"\u003e\u003ccode\u003e94ad895\u003c/code\u003e\u003c/a\u003e chore(librarian): bump library version to 3.7.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/89bfe7a5fcd0391da35e9ceccc185279782b5420\"\u003e\u003ccode\u003e89bfe7a\u003c/code\u003e\u003c/a\u003e feat(experimental): flush the last chunk in append method (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a57ea0ec786a84c7ae9ed82c6ae5d38ecadba4af\"\u003e\u003ccode\u003ea57ea0e\u003c/code\u003e\u003c/a\u003e feat(experimental): add write resumption strategy (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/0c35d3f3dd767831259a188156140b18f7ff9927\"\u003e\u003ccode\u003e0c35d3f\u003c/code\u003e\u003c/a\u003e chore(tests): add test for reading unfinalized appendable objects with genera...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/d90f0ee09902a21b186106bcf0a8cb0b81b34340\"\u003e\u003ccode\u003ed90f0ee\u003c/code\u003e\u003c/a\u003e feat(experimental): add bidi stream retry manager. (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1632\"\u003e#1632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/a994dbf9c4d6f432a5eff9da08ec88840d47c159\"\u003e\u003ccode\u003ea994dbf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;skip notification tests until b/470069573 is fixed\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1694\"\u003e#1694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dfc60b3e0167790a8ade61b1b2143f297514bdd1\"\u003e\u003ccode\u003edfc60b3\u003c/code\u003e\u003c/a\u003e chore: delete topic after creation (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1687\"\u003e#1687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/1333c956da18b4db753cda98c41c3619c84caf69\"\u003e\u003ccode\u003e1333c95\u003c/code\u003e\u003c/a\u003e feat: implement \u0026quot;append_from_file\u0026quot; (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1686\"\u003e#1686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/fe6d7c930bf4e83187120eda52aeaab932502e9f\"\u003e\u003ccode\u003efe6d7c9\u003c/code\u003e\u003c/a\u003e chore: optimization to reduce number of open TCP connections while running zo...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.26\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\u003ev1.10.26 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\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/v1.10.25...v1.10.26\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.25...v1.10.26\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.25 2025-12-18\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\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/v1.10.24...v1.10.25\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.24...v1.10.25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.26/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.26 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix syntax error under Python 3.7 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/12643\"\u003epydantic/pydantic#12643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.25 (2025-12-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd minimal 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/pydantic/pydantic/pull/12636\"\u003epydantic/pydantic#12636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d771df98f3194ea2695a6a893e318b32381032c3\"\u003e\u003ccode\u003ed771df9\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.26 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12645\"\u003e#12645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c432d3f88cb815aa0b6f3517dbbd9289eea8fae\"\u003e\u003ccode\u003e2c432d3\u003c/code\u003e\u003c/a\u003e Fix syntax error under Python 3.7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12643\"\u003e#12643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/0c1c57c8dd9ef1e03a371a162fee795408040c0b\"\u003e\u003ccode\u003e0c1c57c\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.25 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12641\"\u003e#12641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/59c2e827c8a5a3c15ee6112d7d4460db55136edd\"\u003e\u003ccode\u003e59c2e82\u003c/code\u003e\u003c/a\u003e Add minimal support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12636\"\u003e#12636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.39.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Add work objects support by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1793\"\u003eslackapi/python-slack-sdk#1793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(web-api): add slackLists methods by \u003ca href=\"https://github.com/srtaalej\"\u003e\u003ccode\u003e@​srtaalej\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1772\"\u003eslackapi/python-slack-sdk#1772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add table block by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1788\"\u003eslackapi/python-slack-sdk#1788\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: improve the release instructions by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1792\"\u003eslackapi/python-slack-sdk#1792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Add .github/CODEOWNERS file by \u003ca href=\"https://github.com/mwbrooks\"\u003e\u003ccode\u003e@​mwbrooks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1791\"\u003eslackapi/python-slack-sdk#1791\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.39.0 by \u003ca href=\"https://github.com/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1795\"\u003eslackapi/python-slack-sdk#1795\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/vegeris\"\u003e\u003ccode\u003e@​vegeris\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1783\"\u003eslackapi/python-slack-sdk#1783\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.38.0...v3.39.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/114?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.38.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(models): add underline to rich text section block element by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1771\"\u003eslackapi/python-slack-sdk#1771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support python 3.14 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1784\"\u003eslackapi/python-slack-sdk#1784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse filename for uploaded files by \u003ca href=\"https://github.com/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: remove unused mypy ignore type comments by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1769\"\u003eslackapi/python-slack-sdk#1769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(oauth): use a variable \u0026quot;base_dir\u0026quot; home path for file stores by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1760\"\u003eslackapi/python-slack-sdk#1760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: corrects typo in reference url on landing page by \u003ca href=\"https://github.com/lukegalbraithrussell\"\u003e\u003ccode\u003e@​lukegalbraithrussell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1779\"\u003eslackapi/python-slack-sdk#1779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: link to context actions block and related reference by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1789\"\u003eslackapi/python-slack-sdk#1789\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Other changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: send regression notifications if prior jobs do not succeed on schedule by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1768\"\u003eslackapi/python-slack-sdk#1768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/stale from 10.0.0 to 10.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1776\"\u003eslackapi/python-slack-sdk#1776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump black from 22.10.0 to 23.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1775\"\u003eslackapi/python-slack-sdk#1775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dependabot config to ignore \u003ccode\u003eblack\u003c/code\u003e by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1778\"\u003eslackapi/python-slack-sdk#1778\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: automate release process by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1781\"\u003eslackapi/python-slack-sdk#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add a formatter script for maintainers by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1785\"\u003eslackapi/python-slack-sdk#1785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload test results using the recommended codecov action by \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1787\"\u003eslackapi/python-slack-sdk#1787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(release): version 3.38.0 by \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1790\"\u003eslackapi/python-slack-sdk#1790\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/codomposer\"\u003e\u003ccode\u003e@​codomposer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1774\"\u003eslackapi/python-slack-sdk#1774\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.37.0...v3.38.0\u003c/a\u003e\n\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/113?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.37.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/978dd5617f3c885142db8d968b03e26bc19ba135\"\u003e\u003ccode\u003e978dd56\u003c/code\u003e\u003c/a\u003e chore(release): version 3.39.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9fd33fe2d142ad53c699c6c61d99dc23baa34699\"\u003e\u003ccode\u003e9fd33fe\u003c/code\u003e\u003c/a\u003e feat: add table block (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/c04e899f9e153fc102cf699d1b044202022148c1\"\u003e\u003ccode\u003ec04e899\u003c/code\u003e\u003c/a\u003e feat(web-api): add slackLists methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/e802f1716719f5ed3996f966e2c341033e1b0053\"\u003e\u003ccode\u003ee802f17\u003c/code\u003e\u003c/a\u003e feat: update work objects support (entity.presentDetails) (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1793\"\u003e#1793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/4277ed87a0572cad92894b0b8b2b5104efe2d3f6\"\u003e\u003ccode\u003e4277ed8\u003c/code\u003e\u003c/a\u003e feat: Add work objects support (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1783\"\u003e#1783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/998ee043209ec90adaa29f12c16210f218bfbb61\"\u003e\u003ccode\u003e998ee04\u003c/code\u003e\u003c/a\u003e fix: improve the release instructions (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1792\"\u003e#1792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/21ac4f79e8e8ab6fb868682fc3814522ea37ab6a\"\u003e\u003ccode\u003e21ac4f7\u003c/code\u003e\u003c/a\u003e chore: Add .github/CODEOWNERS file (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/ae366555d6d430befd11dd2f0bf76707879635aa\"\u003e\u003ccode\u003eae36655\u003c/code\u003e\u003c/a\u003e chore(release): version 3.38.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1790\"\u003e#1790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/66b45239097983b8a0b5b82a02e694ba8f90a06e\"\u003e\u003ccode\u003e66b4523\u003c/code\u003e\u003c/a\u003e docs: link to context actions block and related reference (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1789\"\u003e#1789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/9e089031db3041e1f4c7611aa023923ae586d5fa\"\u003e\u003ccode\u003e9e08903\u003c/code\u003e\u003c/a\u003e ci: upload test results using the recommended codecov action (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1787\"\u003e#1787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.5.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where pie trace \u003ccode\u003elegend\u003c/code\u003e, \u003ccode\u003eshowlegend\u003c/code\u003e attributes don't accept array values [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5464\"\u003e#5464\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5465\"\u003e#5465\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/my-tien\"\u003e\u003ccode\u003e@​my-tien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where Plotly Express ignored trace-specific color sequences defined in templates via \u003ccode\u003etemplate.data.\u0026lt;trace_type\u0026gt;\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5437\"\u003e#5437\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/antonymilne\"\u003e\u003ccode\u003e@​antonymilne\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003evalidate_gantt\u003c/code\u003e function [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5386\"\u003e#5386\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/misrasaurabh1\"\u003e\u003ccode\u003e@​misrasaurabh1\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.0 to version 3.3.1. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.1\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5456\"\u003e#5456\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for arrays for the pie properties \u003ccode\u003eshowlegend\u003c/code\u003e and \u003ccode\u003elegend\u003c/code\u003e, so that these can be configured per slice. [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7580\"\u003e#7580\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.5.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.4.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable chan...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/436","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/436","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/436/packages"}},{"old_version":"2.5.0","new_version":"3.1.0","update_type":"major","path":"/backend","pr_created_at":"2026-01-26T17:42:51.000Z","version_change":"2.5.0 → 3.1.0","issue":{"uuid":"3856961533","node_id":"PR_kwDOQ95aMc6_ar1Z","number":9,"state":"closed","title":"chore(deps): bump opensearch-py from 2.5.0 to 3.1.0 in /backend","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-01-26T19:32:17.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T17:42:51.000Z","updated_at":"2026-01-26T19:32:27.000Z","time_to_close":6566,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"opensearch-py","old_version":"2.5.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 2.5.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.5.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=2.5.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/TerrifiedBug/chad/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerrifiedBug%2Fchad/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"}},{"old_version":"2.8.0","new_version":"3.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-09T09:09:41.000Z","version_change":"2.8.0 → 3.1.0","issue":{"uuid":"3709927898","node_id":"PR_kwDOL7kQEs633gT-","number":602,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-10T18:09:25.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-09T09:09:41.000Z","updated_at":"2025-12-10T18:09:28.000Z","time_to_close":118784,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":24,"packages":[{"name":"fastapi","old_version":"0.111.1","new_version":"0.124.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"locust","old_version":"2.25.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"mangum","old_version":"0.17.0","new_version":"0.19.0","repository_url":"https://github.com/Kludex/mangum"},{"name":"pre-commit","old_version":"3.5.0","new_version":"4.5.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pydantic","old_version":"2.11.9","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"pytest-asyncio","old_version":"0.25","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"uvicorn","old_version":"0.22.0","new_version":"0.38.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"boto3","old_version":"1.35.95","new_version":"1.42.5","repository_url":"https://github.com/boto/boto3"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"pypdf","old_version":"6.0.0","new_version":"6.4.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"langchain-community","old_version":"0.3.27","new_version":"0.4.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"0.3.76","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"0.3.33","new_version":"1.1.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-text-splitters","old_version":"0.3.11","new_version":"1.0.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.2","repository_url":"https://github.com/tkem/cachetools"},{"name":"pytest","old_version":"8.3.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"moto","old_version":"5.0.3","new_version":"5.1.18"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"black","old_version":"24.3.0","new_version":"25.12.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":"mypy","old_version":"1.9.0","new_version":"1.19.0","repository_url":"https://github.com/python/mypy"},{"name":"pydantic-core","old_version":"2.33.2","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 24 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.1` | `0.124.0` |\n| [locust](https://github.com/locustio/locust) | `2.25.0` | `2.42.6` |\n| [mangum](https://github.com/Kludex/mangum) | `0.17.0` | `0.19.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `3.5.0` | `4.5.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.9` | `2.12.5` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.25` | `1.3.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.22.0` | `0.38.0` |\n| [boto3](https://github.com/boto/boto3) | `1.35.95` | `1.42.5` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.0.0` | `6.4.1` |\n| [langchain-community](https://github.com/langchain-ai/langchain) | `0.3.27` | `0.4.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.76` | `1.1.2` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `0.3.33` | `1.1.1` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `0.3.11` | `1.0.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.2` | `9.0.2` |\n| [moto[all]](https://github.com/getmoto/moto) | `5.0.3` | `5.1.18` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.1.0` |\n| [black](https://github.com/psf/black) | `24.3.0` | `25.12.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [mypy](https://github.com/python/mypy) | `1.9.0` | `1.19.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.5` |\n\n\nUpdates `fastapi` from 0.111.1 to 0.124.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.124.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🚸  Improve tracebacks by adding endpoint metadata. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14306\"\u003e#14306\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\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 typo in \u003ccode\u003escripts/mkdocs_hooks.py\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14457\"\u003e#14457\u003c/a\u003e by \u003ca href=\"https://github.com/yujiteshima\"\u003e\u003ccode\u003e@​yujiteshima\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.123.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix using class (not instance) dependency that has \u003ccode\u003e__call__\u003c/code\u003e method. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14458\"\u003e#14458\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🐛 Fix \u003ccode\u003eseparate_input_output_schemas=False\u003c/code\u003e with \u003ccode\u003ecomputed_field\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14453\"\u003e#14453\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.123.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix OAuth2 scopes in OpenAPI in extra corner cases, parent dependency with scopes, sub-dependency security scheme without scopes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14459\"\u003e#14459\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.123.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix OpenAPI security scheme OAuth2 scopes declaration, deduplicate security schemes with different scopes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14455\"\u003e#14455\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.123.7\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix evaluating stringified annotations in Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/11355\"\u003e#11355\u003c/a\u003e by \u003ca href=\"https://github.com/chaen\"\u003e\u003ccode\u003e@​chaen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.123.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for functools wraps and partial combined, for async and regular functions and classes in path operations and dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14448\"\u003e#14448\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.123.5\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Allow using dependables with \u003ccode\u003efunctools.partial()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9753\"\u003e#9753\u003c/a\u003e by \u003ca href=\"https://github.com/lieryan\"\u003e\u003ccode\u003e@​lieryan\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Add support for wrapped functions (e.g. \u003ccode\u003e@functools.wraps()\u003c/code\u003e) used with forward references. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/5077\"\u003e#5077\u003c/a\u003e by \u003ca href=\"https://github.com/lucaswiman\"\u003e\u003ccode\u003e@​lucaswiman\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Handle wrapped dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9555\"\u003e#9555\u003c/a\u003e by \u003ca href=\"https://github.com/phy1729\"\u003e\u003ccode\u003e@​phy1729\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix optional sequence handling with new union syntax from Python 3.10. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14430\"\u003e#14430\u003c/a\u003e 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\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove dangling extra condiitonal no longer needed. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14435\"\u003e#14435\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Refactor internals, update \u003ccode\u003eis_coroutine\u003c/code\u003e check to reuse internal supported variants (unwrap, check class). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14434\"\u003e#14434\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/b5ca13249e3f2002c70c3f2de528a128af2008f7\"\u003e\u003ccode\u003eb5ca132\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.124.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a2cef707e30fb6eb14812e4e273e34079d30ae6b\"\u003e\u003ccode\u003ea2cef70\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5b6245666b8a499d2551caff7567056ef7f881b2\"\u003e\u003ccode\u003e5b62456\u003c/code\u003e\u003c/a\u003e ✏️ Fix typo in \u003ccode\u003escripts/mkdocs_hooks.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14457\"\u003e#14457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/dbd34f15789f4afa851e339cea4fcd49f421039d\"\u003e\u003ccode\u003edbd34f1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e1117f75505bbdb2d42321a009dbf26c9c2b8b6d\"\u003e\u003ccode\u003ee1117f7\u003c/code\u003e\u003c/a\u003e 🚸  Improve tracebacks by adding endpoint metadata (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14306\"\u003e#14306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/08b09e5236e315b6f10265ed229f130d4befb4ea\"\u003e\u003ccode\u003e08b09e5\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.123.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e7d7038dfa35fc923f20fd11a969d2e65e1b9df1\"\u003e\u003ccode\u003ee7d7038\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/da0ffab0b260475499294d3dc767409d7bca5c34\"\u003e\u003ccode\u003eda0ffab\u003c/code\u003e\u003c/a\u003e 🐛 Fix using class (not instance) dependency that has \u003ccode\u003e__call__\u003c/code\u003e method (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14458\"\u003e#14458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/516169428d2fa189d34318ebc469a082c49c1189\"\u003e\u003ccode\u003e5161694\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/812a1926f06391b22b081fdb11fe7528e3b91293\"\u003e\u003ccode\u003e812a192\u003c/code\u003e\u003c/a\u003e 🐛 Fix \u003ccode\u003eseparate_input_output_schemas=False\u003c/code\u003e with \u003ccode\u003ecomputed_field\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14453\"\u003e#14453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.111.1...0.124.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `locust` from 2.25.0 to 2.42.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/locustio/locust/releases\"\u003elocust's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.42.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGH Actions: Bump actions/checkout from 5 to 6 in the all_dependencies 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/locustio/locust/pull/3287\"\u003elocustio/locust#3287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Toml Parser Being Called on Conf Files by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3293\"\u003elocustio/locust#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly log \u0026quot;OpenTelemetry enabled\u0026quot; message when success by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3294\"\u003elocustio/locust#3294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd otel unit tests by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3295\"\u003elocustio/locust#3295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLog duplicate client_ready messages as debug instead of info level by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3296\"\u003elocustio/locust#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove tests by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3297\"\u003elocustio/locust#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OTel documentation by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3298\"\u003elocustio/locust#3298\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate OTel setup by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3300\"\u003elocustio/locust#3300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse match-case instead of gigantic if-elif statement when handling zmq messages in master-worker communication by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3299\"\u003elocustio/locust#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor case statements and update to use 3.10 set syntax by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3301\"\u003elocustio/locust#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't import pytest unless it is really needed, to speed up startup by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3302\"\u003elocustio/locust#3302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.42.5...2.42.6\"\u003ehttps://github.com/locustio/locust/compare/2.42.5...2.42.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.42.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLog when otel is enabled by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3284\"\u003elocustio/locust#3284\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.42.4...2.42.5\"\u003ehttps://github.com/locustio/locust/compare/2.42.4...2.42.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.42.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnables FURB ruff lint by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3265\"\u003elocustio/locust#3265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdates pytest dependency range by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3263\"\u003elocustio/locust#3263\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow multiple dropdown in Web UI by \u003ca href=\"https://github.com/jFompe\"\u003e\u003ccode\u003e@​jFompe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3261\"\u003elocustio/locust#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIncludes npm and uv on dependabot file by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3269\"\u003elocustio/locust#3269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenTelemetry support by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3275\"\u003elocustio/locust#3275\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd otlp http exporter dependency by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3276\"\u003elocustio/locust#3276\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable uv.lock check in GH action by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3277\"\u003elocustio/locust#3277\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenTelemetry flag by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3278\"\u003elocustio/locust#3278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVerbose request span name by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3279\"\u003elocustio/locust#3279\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the eslint group in /locust/webui with 11 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/locustio/locust/pull/3270\"\u003elocustio/locust#3270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eForward explicitly set request name to OTEL span by \u003ca href=\"https://github.com/amadeuppereira\"\u003e\u003ccode\u003e@​amadeuppereira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3281\"\u003elocustio/locust#3281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid duplicated action run on pull requests by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3282\"\u003elocustio/locust#3282\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/jFompe\"\u003e\u003ccode\u003e@​jFompe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3261\"\u003elocustio/locust#3261\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.42.3...2.42.4\"\u003ehttps://github.com/locustio/locust/compare/2.42.3...2.42.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.42.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix single line .conf files incorrectly being treated as toml by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3257\"\u003elocustio/locust#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGH Actions: update uv version, ensure uv.lock doesn't contain anything not in pyproject.toml by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3259\"\u003elocustio/locust#3259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreates dependabot file to keep gh actions updated by \u003ca href=\"https://github.com/jairhenrique\"\u003e\u003ccode\u003e@​jairhenrique\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3264\"\u003elocustio/locust#3264\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all_dependencies group with 7 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/locustio/locust/pull/3266\"\u003elocustio/locust#3266\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/locustio/locust/blob/master/docs/changelog.rst\"\u003elocust's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.42.6\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eGH Actions: Bump actions/checkout from 5 to 6 \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3287\"\u003elocustio/locust#3287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Toml Parser Being Called on .conf Files \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3293\"\u003elocustio/locust#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLog duplicate client_ready messages as debug instead of info level \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3296\"\u003elocustio/locust#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVarious minor code modernization \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3299\"\u003elocustio/locust#3299\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3301\"\u003elocustio/locust#3301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't import pytest unless it is really needed, to speed up startup \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3296\"\u003elocustio/locust#3296\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.5\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eLog when otel is enabled \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3284\"\u003elocustio/locust#3284\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.4\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate pytest dependency range \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3263\"\u003elocustio/locust#3263\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow multiple dropdown in Web UI \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3261\"\u003elocustio/locust#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenTelemetry support \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3275\"\u003elocustio/locust#3275\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3276\"\u003elocustio/locust#3276\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3278\"\u003elocustio/locust#3278\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3279\"\u003elocustio/locust#3279\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.3\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix single line .conf files incorrectly being treated as toml \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3257\"\u003elocustio/locust#3257\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate various GitHub actions used in the build \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3266\"\u003elocustio/locust#3266\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3259\"\u003elocustio/locust#3259\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove setuptools from dependencies \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3253\"\u003elocustio/locust#3253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix an issue with .conf-files \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3256\"\u003elocustio/locust#3256\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd VS Code Extension and k8s Operator to documentation \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3251\"\u003elocustio/locust#3251\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.42.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce DNSUser \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3243\"\u003elocustio/locust#3243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDependencies: allow gevent \u0026gt;25.8.1, avoid python-requests \u0026gt;2.32.5\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.41.6\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3235\"\u003elocustio/locust#3235\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.41.5\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix FastHttpUser handling of 308 response code\u003c/li\u003e\n\u003cli\u003eFix Unsafe Template Arg \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3232\"\u003elocustio/locust#3232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.41.4\u003c/h1\u003e\n\u003cp\u003e(skipped because of failed publishing)\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/locustio/locust/commit/3d7ff7b2930d1fc0c70ce4aa67ab640bc1d533df\"\u003e\u003ccode\u003e3d7ff7b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3302\"\u003e#3302\u003c/a\u003e from locustio/only-import-pytest-when-needed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/5f4d9bbf3030730f7d2cf8a4c42060918ba6bd32\"\u003e\u003ccode\u003e5f4d9bb\u003c/code\u003e\u003c/a\u003e Dont import pytest unless it is really needed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/49c65097300cf4aec943f36cb722d91617a8adbb\"\u003e\u003ccode\u003e49c6509\u003c/code\u003e\u003c/a\u003e Use f-string when printing error occurrences in error report\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/dc1e9a9ca7c77b0eb62e6a1741682a569988985b\"\u003e\u003ccode\u003edc1e9a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3301\"\u003e#3301\u003c/a\u003e from locustio/simplify-custom-messages-match-case-st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/d552bf49243e89bdbdc03a259b486f0adb75ebf3\"\u003e\u003ccode\u003ed552bf4\u003c/code\u003e\u003c/a\u003e Use match-case instead of if-elif when iterating over form items\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/03f0304b13a622adb52ab75efe47912b2c6bca7b\"\u003e\u003ccode\u003e03f0304\u003c/code\u003e\u003c/a\u003e use 3.10 set syntax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/295383193912e5e5af94ca478af9a6a3f7ba99e1\"\u003e\u003ccode\u003e2953831\u003c/code\u003e\u003c/a\u003e improve runners test case\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/2492928fb64199b243efe8af05bdaa46cf097f33\"\u003e\u003ccode\u003e2492928\u003c/code\u003e\u003c/a\u003e Simplify custom messages case statement in runners.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/dbdf85e013766a095e3a8eda1252fd3ac8ead990\"\u003e\u003ccode\u003edbdf85e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3299\"\u003e#3299\u003c/a\u003e from locustio/use-match-case-instead-of-elif-for-zmq...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/1ff72bd86eac29f9a2101c8498295774fe5210a0\"\u003e\u003ccode\u003e1ff72bd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3300\"\u003e#3300\u003c/a\u003e from amadeuppereira/update-otel\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/locustio/locust/compare/2.25.0...2.42.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mangum` from 0.17.0 to 0.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/mangum/releases\"\u003emangum's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for lifespan state 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/mangum/pull/337\"\u003eKludex/mangum#337\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/mangum/compare/0.18.0...0.19.0\"\u003ehttps://github.com/Kludex/mangum/compare/0.18.0...0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0\u003c/h2\u003e\n\u003cp\u003eMangum officially supports Python 3.13! 🎉\u003c/p\u003e\n\u003cp\u003eNothing changes from 0.18.0a1.\u003c/p\u003e\n\u003ch2\u003e0.18.0a1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix a broken link to asgi-frameworks limitations by \u003ca href=\"https://github.com/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate project 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/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc: remove expired domain from README by \u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proper publish workflow 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/mangum/pull/328\"\u003eKludex/mangum#328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove codecov 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/mangum/pull/329\"\u003eKludex/mangum#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePublish documentation on tag push 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/mangum/pull/330\"\u003eKludex/mangum#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate documentation 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/mangum/pull/331\"\u003eKludex/mangum#331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 0.18.0a1 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/mangum/pull/332\"\u003eKludex/mangum#332\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/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\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/mangum/compare/0.17.0...0.18.0a1\"\u003ehttps://github.com/Kludex/mangum/compare/0.17.0...0.18.0a1\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/mangum/blob/main/CHANGELOG.md\"\u003emangum's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.19.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://asgi.readthedocs.io/en/latest/specs/lifespan.html#lifespan-state\"\u003eLifespan State\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.18.0\u003c/h1\u003e\n\u003cp\u003eNo changes were made compared to 0.18.0a1.\u003c/p\u003e\n\u003ch1\u003e0.18.0a1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\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/mangum/commit/4152a4eb8d325e382f41e4b04628671565f12a2d\"\u003e\u003ccode\u003e4152a4e\u003c/code\u003e\u003c/a\u003e Version 0.19.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/631b930e72a43d7872ca177b84fa3cfca8714a99\"\u003e\u003ccode\u003e631b930\u003c/code\u003e\u003c/a\u003e Add support for lifespan state (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/5a7121d56b2a7868e3331a1c4bc278711693a142\"\u003e\u003ccode\u003e5a7121d\u003c/code\u003e\u003c/a\u003e Update linting and type checker setup (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b7e18ede3eadb38cc5d536d4c46a0a5ffa160270\"\u003e\u003ccode\u003eb7e18ed\u003c/code\u003e\u003c/a\u003e Remove FUNDING.yml (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/c8246c556e068590d91b98d6516e7f87a5703640\"\u003e\u003ccode\u003ec8246c5\u003c/code\u003e\u003c/a\u003e Create CNAME (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b749f9530e12ee90461628eaeadbc644fa89dd3e\"\u003e\u003ccode\u003eb749f95\u003c/code\u003e\u003c/a\u003e Version 0.18.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/a32d59dd253305f5d2d75551223c1984b6f22910\"\u003e\u003ccode\u003ea32d59d\u003c/code\u003e\u003c/a\u003e Version 0.18.0a1 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/4a95083438a100224896a98e7392395e96bfbfce\"\u003e\u003ccode\u003e4a95083\u003c/code\u003e\u003c/a\u003e Update documentation (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/93baf9c0054f8623885fb658bc8299b8126c8e42\"\u003e\u003ccode\u003e93baf9c\u003c/code\u003e\u003c/a\u003e Publish documentation on tag push (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/330\"\u003e#330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/d8455d1434dc50cf3b57078288345609c8e5d7fc\"\u003e\u003ccode\u003ed8455d1\u003c/code\u003e\u003c/a\u003e Remove codecov (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/mangum/compare/0.17.0...0.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 3.5.0 to 4.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.5.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases for \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be deprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.3.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.2.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for the default language version before consulting a potentially unversioned \u003ccode\u003esys.executable\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3430\"\u003e#3430\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle error during conflict detection when a file is named \u0026quot;HEAD\u0026quot;\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3425\"\u003e#3425\u003c/a\u003e PR by \u003ca href=\"https://github.com/tusharsadhwani\"\u003e\u003ccode\u003e@​tusharsadhwani\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.1.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3348\"\u003e#3348\u003c/a\u003e PR by \u003ca href=\"https://github.com/fredrikekre\"\u003e\u003ccode\u003e@​fredrikekre\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2689\"\u003e#2689\u003c/a\u003e issue \u003ca href=\"https://github.com/jmuchovej\"\u003e\u003ccode\u003e@​jmuchovej\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.5.0 - 2025-11-22\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epre-commit hazmat\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.4.0 - 2025-11-08\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--fail-fast\u003c/code\u003e option to \u003ccode\u003epre-commit run\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3528\"\u003e#3528\u003c/a\u003e PR by \u003ca href=\"https://github.com/JulianMaurin\"\u003e\u003ccode\u003e@​JulianMaurin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\u003c/code\u003e / \u003ccode\u003erbenv\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3566\"\u003e#3566\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3565\"\u003e#3565\u003c/a\u003e issue by \u003ca href=\"https://github.com/MRigal\"\u003e\u003ccode\u003e@​MRigal\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: unsupported\u003c/code\u003e / \u003ccode\u003elanguage: unsupported_script\u003c/code\u003e as aliases\nfor \u003ccode\u003elanguage: system\u003c/code\u003e / \u003ccode\u003elanguage: script\u003c/code\u003e (which will eventually be\ndeprecated).\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3577\"\u003e#3577\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdd support docker-in-docker detection for cgroups v2.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3535\"\u003e#3535\u003c/a\u003e PR by \u003ca href=\"https://github.com/br-rhrbacek\"\u003e\u003ccode\u003e@​br-rhrbacek\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3360\"\u003e#3360\u003c/a\u003e issue by \u003ca href=\"https://github.com/JasonAlt\"\u003e\u003ccode\u003e@​JasonAlt\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle when docker gives \u003ccode\u003eSecurityOptions: null\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3537\"\u003e#3537\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3514\"\u003e#3514\u003c/a\u003e issue by \u003ca href=\"https://github.com/jenstroeger\"\u003e\u003ccode\u003e@​jenstroeger\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix error context for invalid \u003ccode\u003estages\u003c/code\u003e in \u003ccode\u003e.pre-commit-config.yaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3576\"\u003e#3576\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.3.0 - 2025-08-09\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.2.0 - 2025-03-18\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for\nthe default language version before consulting a potentially unversioned\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1af6c8fa9502336c6977c2ff3e79185bd97a6e57\"\u003e\u003ccode\u003e1af6c8f\u003c/code\u003e\u003c/a\u003e v4.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/3358a3b54077cd8c8c99618aed003b771a21cb65\"\u003e\u003ccode\u003e3358a3b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3585\"\u003e#3585\u003c/a\u003e from pre-commit/hazmat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/bdf68790b78158268bbc8482f76491a61d75809a\"\u003e\u003ccode\u003ebdf6879\u003c/code\u003e\u003c/a\u003e add pre-commit hazmat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/e436690f140cbbe1d0f359654edf3ab9ecb8da2d\"\u003e\u003ccode\u003ee436690\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3584\"\u003e#3584\u003c/a\u003e from pre-commit/exitstack\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8d34f95308fc4c14dea3d3e90153acfdaf55e2de\"\u003e\u003ccode\u003e8d34f95\u003c/code\u003e\u003c/a\u003e use ExitStack instead of start + stop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/9c7ea88ab95cb063cb0f0b74f395ff7b9cdbe0c5\"\u003e\u003ccode\u003e9c7ea88\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3583\"\u003e#3583\u003c/a\u003e from pre-commit/forward-compat-map-manifest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/844dacc168d68a32553ecf8a99178ab395fdb11e\"\u003e\u003ccode\u003e844dacc\u003c/code\u003e\u003c/a\u003e add forward-compat error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/6a1d543e523a02bbaad43da7df594cedff242abd\"\u003e\u003ccode\u003e6a1d543\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3582\"\u003e#3582\u003c/a\u003e from pre-commit/move-gc-back\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/66278a9a0b69a69fde820d2b85a7e198eae52981\"\u003e\u003ccode\u003e66278a9\u003c/code\u003e\u003c/a\u003e move logic for gc back to commands.gc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1b32c50bc7e2f6b603b7ce26ecdf67c9c9dee3c6\"\u003e\u003ccode\u003e1b32c50\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3579\"\u003e#3579\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v3.5.0...v4.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.9 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.9...v2.12.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-xdist` from 3.6.1 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst\"\u003epytest-xdist's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epytest-xdist 3.8.0 (2025-06-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1083](https://github.com/pytest-dev/pytest-xdist/issues/1083) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1083\u0026gt;\u003c/code\u003e_: Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e option to control whether to automatically reorder tests in loadscope for tests where relative ordering matters. This only applies when using \u003ccode\u003eloadscope\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor example, [test_file_1, test_file_2, ..., test_file_n] are given as input test files, if \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e is used, for either worker, the \u003ccode\u003etest_file_a\u003c/code\u003e will be executed before \u003ccode\u003etest_file_b\u003c/code\u003e only if \u003ccode\u003ea \u0026lt; b\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default behavior is to reorder the tests to maximize the number of tests that can be executed in parallel.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003epytest-xdist 3.7.0 (2025-05-26)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1142](https://github.com/pytest-dev/pytest-xdist/issues/1142) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1142\u0026gt;\u003c/code\u003e_: Added support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1144](https://github.com/pytest-dev/pytest-xdist/issues/1144) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1144\u0026gt;\u003c/code\u003e_: The internal \u003ccode\u003esteal\u003c/code\u003e command is now atomic - it unschedules either all requested tests or none.\u003c/p\u003e\n\u003cp\u003eThis is a prerequisite for group/scope support in the \u003ccode\u003eworksteal\u003c/code\u003e scheduler, so test groups won't be broken up incorrectly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1170](https://github.com/pytest-dev/pytest-xdist/issues/1170) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1170\u0026gt;\u003c/code\u003e_: Add the \u003ccode\u003e--px\u003c/code\u003e arg to create proxy gateways.\u003c/p\u003e\n\u003cp\u003eProxy gateways are passed to additional gateways using the \u003ccode\u003evia\u003c/code\u003e keyword.\nThey can serve as a way to run multiple workers on remote machines.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1200](https://github.com/pytest-dev/pytest-xdist/issues/1200) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1200\u0026gt;\u003c/code\u003e_: Now multiple \u003ccode\u003exdist_group\u003c/code\u003e markers are considered when assigning tests to groups (order does not matter).\u003c/p\u003e\n\u003cp\u003ePreviously, only the last marker would assign a test to a group, but now if a test has multiple \u003ccode\u003exdist_group\u003c/code\u003e marks applied (for example via parametrization or via fixtures), they are merged to make a new group.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#1162](https://github.com/pytest-dev/pytest-xdist/issues/1162) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1162\u0026gt;\u003c/code\u003e_: Dropped support for EOL Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTrivial Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1092](https://github.com/pytest-dev/pytest-xdist/issues/1092) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1092\u0026gt;\u003c/code\u003e_: Update an error message to better indicate where users should go for more information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1190](https://github.com/pytest-dev/pytest-xdist/issues/1190) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1190\u0026gt;\u003c/code\u003e_: Switched to using a SPDX license identifier introduced in PEP 639.\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-xdist/commit/1e3e4dc16523c8a8f6c67d95a950166420718c99\"\u003e\u003ccode\u003e1e3e4dc\u003c/code\u003e\u003c/a\u003e Release 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/600aad575a4e4382855145b0c464d51b8f0b7242\"\u003e\u003ccode\u003e600aad5\u003c/code\u003e\u003c/a\u003e Ensure all xdist group names are strings (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1216\"\u003e#1216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/9d7ba5b5fbbbe26793fbfb7cb1903eb69425cf09\"\u003e\u003ccode\u003e9d7ba5b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/532f07fb181bb1546eda79bbe6b46bdb56c699e1\"\u003e\u003ccode\u003e532f07f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1210\"\u003e#1210\u003c/a\u003e from pytest-dev/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/0883ad085e0cf039c8ae13eb2789c1076544d225\"\u003e\u003ccode\u003e0883ad0\u003c/code\u003e\u003c/a\u003e Fix Path usage in \u003ccode\u003etest_rsync_roots_no_roots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/58a51bc14015d211761e44c2bdacab09c3893668\"\u003e\u003ccode\u003e58a51bc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/59a2ad0150697b9ff837f3ae8dcf6e074d5a114b\"\u003e\u003ccode\u003e59a2ad0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1220\"\u003e#1220\u003c/a\u003e from pytest-dev/dependabot/github_actions/github-act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/d42b9c72044855236c68286ca3bdb34486a05872\"\u003e\u003ccode\u003ed42b9c7\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/ebfcb99072aed3503fda5175245f28895a0204bb\"\u003e\u003ccode\u003eebfcb99\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1206\"\u003e#1206\u003c/a\u003e from pytest-dev/release-3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/23b7fd6054298a530b02b33d07007b3082a36277\"\u003e\u003ccode\u003e23b7fd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.8.0\"\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.25 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.25.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 `uvicorn` from 0.22.0 to 0.38.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.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 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/2723\"\u003eKludex/uvicorn#2723\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/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\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.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting 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/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\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/2709\"\u003eKludex/uvicorn#2709\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.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e by \u003ca href=\"https://...\n\n_Description has been truncated_","html_url":"https://github.com/awslabs/LISA/pull/602","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/602","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/602/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2025-12-09T09:03:46.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3709905004","node_id":"PR_kwDOL7kQEs633bSc","number":600,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-10T18:08:54.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-09T09:03:46.000Z","updated_at":"2025-12-10T18:08:55.000Z","time_to_close":119108,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":8,"packages":[{"name":"langchain-text-splitters","old_version":"0.3.11","new_version":"1.0.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-community","old_version":"0.3.27","new_version":"0.4.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"0.3.76","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"pgvector","old_version":"0.2.5","new_version":"0.4.2","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"pypdf","old_version":"6.1.1","new_version":"6.4.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"tiktoken","old_version":"0.9.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.1","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 8 updates in the /lib/rag/layer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `0.3.11` | `1.0.0` |\n| [langchain-community](https://github.com/langchain-ai/langchain) | `0.3.27` | `0.4.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.76` | `1.1.2` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `3.0.0` | `3.1.0` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.2.5` | `0.4.2` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.1.1` | `6.4.1` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.9.0` | `0.12.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.1` |\n\n\nUpdates `langchain-text-splitters` from 0.3.11 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-text-splitters's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-text-splitters==1.0.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-text-splitters==0.3.11\u003c/p\u003e\n\u003cp\u003erelease(text-splitters): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33565\"\u003e#33565\u003c/a\u003e)\nstyle: more work for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33508\"\u003e#33508\u003c/a\u003e)\ndocs: update package READMEs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33488\"\u003e#33488\u003c/a\u003e)\nchore(text-splitters): remove arg types from docstrings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33406\"\u003e#33406\u003c/a\u003e)\nstyle: \u003ccode\u003e.. code-block::\u003c/code\u003e admonition translations (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33400\"\u003e#33400\u003c/a\u003e)\nstyle: address Sphinx double-backtick snippet syntax (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33389\"\u003e#33389\u003c/a\u003e)\nstyle: remove more \u003ccode\u003eOptional\u003c/code\u003e syntax (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33371\"\u003e#33371\u003c/a\u003e)\nstyle: monorepo pass for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33359\"\u003e#33359\u003c/a\u003e)\nchore: enrich \u003ccode\u003epyproject.toml\u003c/code\u003e files with links to new references, others (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33343\"\u003e#33343\u003c/a\u003e)\nchore: clean up \u003ccode\u003epyproject.toml\u003c/code\u003e files, use core a7 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33334\"\u003e#33334\u003c/a\u003e)\nchore(text-splitters): cleanup ruff config  (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33247\"\u003e#33247\u003c/a\u003e)\nchore(infra): pdm -\u0026gt; hatchling (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33289\"\u003e#33289\u003c/a\u003e)\ndocs: v1 docs updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33173\"\u003e#33173\u003c/a\u003e)\nrelease(text-splitters): 1.0.0a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33214\"\u003e#33214\u003c/a\u003e)\nrefactor(text-splitters): drop python 3.9 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33212\"\u003e#33212\u003c/a\u003e)\nrelease: v1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32567\"\u003e#32567\u003c/a\u003e)\ndocs: more standardization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33124\"\u003e#33124\u003c/a\u003e)\nchore: bump ruff version to 0.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33043\"\u003e#33043\u003c/a\u003e)\ntest(text-splitters): capture beta warnings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33113\"\u003e#33113\u003c/a\u003e)\ntest(text-splitters): resolve pytest marker warning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33112\"\u003e#33112\u003c/a\u003e)\nchore: update \u003ccode\u003epyproject.toml\u003c/code\u003e files, remove codespell (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33028\"\u003e#33028\u003c/a\u003e)\nchore: bump mypy version to 1.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32914\"\u003e#32914\u003c/a\u003e)\nfix(text-splitters): add validation to prevent infinite loop and prevent empty token splitter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32205\"\u003e#32205\u003c/a\u003e)\nrevert: \u0026quot;chore: remove ruff target-version\u0026quot; (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32895\"\u003e#32895\u003c/a\u003e)\nchore: remove ruff target-version (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32880\"\u003e#32880\u003c/a\u003e)\nchore(docs): update package \u003ccode\u003eREADME\u003c/code\u003es (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32869\"\u003e#32869\u003c/a\u003e)\nchore(text-splitters): enable ruff docstring-code-format (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32854\"\u003e#32854\u003c/a\u003e)\nchore(text-splitters): select ALL rules with exclusions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32325\"\u003e#32325\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-text-splitters==1.0.0a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(text-splitters): 1.0.0a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33214\"\u003e#33214\u003c/a\u003e)\nrefactor(text-splitters): drop python 3.9 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33212\"\u003e#33212\u003c/a\u003e)\nrelease: v1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32567\"\u003e#32567\u003c/a\u003e)\ndocs: more standardization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33124\"\u003e#33124\u003c/a\u003e)\nchore: bump ruff version to 0.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33043\"\u003e#33043\u003c/a\u003e)\ntest(text-splitters): capture beta warnings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33113\"\u003e#33113\u003c/a\u003e)\ntest(text-splitters): resolve pytest marker warning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33112\"\u003e#33112\u003c/a\u003e)\nchore: update \u003ccode\u003epyproject.toml\u003c/code\u003e files, remove codespell (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33028\"\u003e#33028\u003c/a\u003e)\nchore: bump mypy version to 1.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32914\"\u003e#32914\u003c/a\u003e)\nfix(text-splitters): add validation to prevent infinite loop and prevent empty token splitter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32205\"\u003e#32205\u003c/a\u003e)\nrevert: \u0026quot;chore: remove ruff target-version\u0026quot; (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32895\"\u003e#32895\u003c/a\u003e)\nchore: remove ruff target-version (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32880\"\u003e#32880\u003c/a\u003e)\nchore(docs): update package \u003ccode\u003eREADME\u003c/code\u003es (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32869\"\u003e#32869\u003c/a\u003e)\nchore(text-splitters): enable ruff docstring-code-format (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32854\"\u003e#32854\u003c/a\u003e)\nchore(text-splitters): select ALL rules with exclusions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32325\"\u003e#32325\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/langchain-ai/langchain/commit/3b8cb3d4b6122311097c3a5e9801b911525373d0\"\u003e\u003ccode\u003e3b8cb3d\u003c/code\u003e\u003c/a\u003e release(text-splitters): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33565\"\u003e#33565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/15047ae28ae3646d11e6892f584910836729aa45\"\u003e\u003ccode\u003e15047ae\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33564\"\u003e#33564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/888fa3a2fbe1f900fbf88f9a98edde5b6074453b\"\u003e\u003ccode\u003e888fa3a\u003c/code\u003e\u003c/a\u003e release(standard-tests): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33563\"\u003e#33563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/90346b8a35d470da22f1d3c0fea01137dcd2b3b3\"\u003e\u003ccode\u003e90346b8\u003c/code\u003e\u003c/a\u003e release(core): 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33562\"\u003e#33562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2d5efd7b290eab56e8787abfbdde15d27358d997\"\u003e\u003ccode\u003e2d5efd7\u003c/code\u003e\u003c/a\u003e fix(core): support for Python 3.14 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33461\"\u003e#33461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1d2273597a5aa8dda7d1785bd44030e00d78539c\"\u003e\u003ccode\u003e1d22735\u003c/code\u003e\u003c/a\u003e docs: more fixes for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33554\"\u003e#33554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9dd494ddcd3a31ffd673d8f40f386ad18d9e0ea1\"\u003e\u003ccode\u003e9dd494d\u003c/code\u003e\u003c/a\u003e fix(langchain): conditional tools -\u0026gt; end edge when all client side calls retu...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2fa07b19f6ebb00802bda2fc71f83b2ac483b9fa\"\u003e\u003ccode\u003e2fa07b1\u003c/code\u003e\u003c/a\u003e chore(langchain_v1): relax typing on input state (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33552\"\u003e#33552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a022e3c14d6b2899bf0ee77b561b9ef1487e6375\"\u003e\u003ccode\u003ea022e3c\u003c/code\u003e\u003c/a\u003e feat(langchain_v1): Add ShellToolMiddleware and ClaudeBashToolMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33\"\u003e#33\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e0e11423d9aaf5c2e4e5031040618882737b0d7e\"\u003e\u003ccode\u003ee0e1142\u003c/code\u003e\u003c/a\u003e feat(langchain): file-search middleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33551\"\u003e#33551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-text-splitters==0.3.11...langchain-text-splitters==1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-community` from 0.3.27 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-community's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==0.3.80\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==0.3.79\u003c/p\u003e\n\u003cp\u003erelease(core): 0.3.80 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34039\"\u003e#34039\u003c/a\u003e)\nfix(core): fix validation for input variables in f-string templates, restrict functionality supported by jinja2, mustache templates  (GHSA-6qv9-48xg-fc7f) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34038\"\u003e#34038\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==0.3.79\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==0.3.78\u003c/p\u003e\n\u003cp\u003erelease(core): 0.3.79 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33401\"\u003e#33401\u003c/a\u003e)\nfix(core): handle parent/child mustache vars (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33346\"\u003e#33346\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==0.3.78\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==0.3.77\u003c/p\u003e\n\u003cp\u003erelease(core): 0.3.78 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33253\"\u003e#33253\u003c/a\u003e)\nfeat(core): add optional include_id param to convert_to_openai_messages function (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33248\"\u003e#33248\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==0.3.35\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==0.3.34\u003c/p\u003e\n\u003cp\u003erelease(openai): 0.3.35 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33299\"\u003e#33299\u003c/a\u003e)\nfeat(openai): enable stream_usage when using default base URL and client (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33296\"\u003e#33296\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\u003eSee full diff in \u003ca href=\"https://github.com/langchain-ai/langchain/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 0.3.76 to 1.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.1.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.1.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34253\"\u003e#34253\u003c/a\u003e)\nfix(core): pass \u003ccode\u003etool_call_id\u003c/code\u003e to \u003ccode\u003eon_tool_start\u003c/code\u003e callback (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34235\"\u003e#34235\u003c/a\u003e)\nchore(core): improve typing of messages utils functions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34225\"\u003e#34225\u003c/a\u003e)\nfix(core): prevent async task garbage collection (RUF006) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34238\"\u003e#34238\u003c/a\u003e)\nchore(core): use anext and deprecate py_anext (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34211\"\u003e#34211\u003c/a\u003e)\nfeat(core): support google maps grounding in genai block translator (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34244\"\u003e#34244\u003c/a\u003e)\ndocs(core,groq,openai): nits for ref docs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34243\"\u003e#34243\u003c/a\u003e)\ndocs(core): improve style for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34227\"\u003e#34227\u003c/a\u003e)\ndocs(core): update \u003ccode\u003eStrOutputParser\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34213\"\u003e#34213\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.1.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.1.0\u003c/p\u003e\n\u003cp\u003erelease: langchain-core 1.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34212\"\u003e#34212\u003c/a\u003e)\nfeat: Use uuid7 for run ids (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34172\"\u003e#34172\u003c/a\u003e)\nfix: tool call id bug introduced w/ runtime injection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34185\"\u003e#34185\u003c/a\u003e)\nchore: update test to be compatible with mem-optimized runtree (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34176\"\u003e#34176\u003c/a\u003e)\ndocs(core): update docstrings in \u003ccode\u003eRunnableConfig\u003c/code\u003e, \u003ccode\u003edereference_refs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34131\"\u003e#34131\u003c/a\u003e)\ndocs(anthropic,core,langchain): updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34106\"\u003e#34106\u003c/a\u003e)\nstyle(core,langchain,qdrant): fix some docstrings for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34105\"\u003e#34105\u003c/a\u003e)\nfix(core): handle missing \u003ccode\u003eStructuredPrompt\u003c/code\u003e schema (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34096\"\u003e#34096\u003c/a\u003e)\nfix(core): \u003ccode\u003eensure_ascii=False\u003c/code\u003e in \u003ccode\u003ePydanticOutputParser\u003c/code\u003e exception formatting (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34006\"\u003e#34006\u003c/a\u003e)\nfix(infra,core): nits (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34079\"\u003e#34079\u003c/a\u003e)\nstyle(core,langchain-classic,openai): fix griffe warnings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34074\"\u003e#34074\u003c/a\u003e)\nchore(docs): fix a few refs syntax errors (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34044\"\u003e#34044\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.1.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.8\u003c/p\u003e\n\u003cp\u003erelease(core): 1.1.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34063\"\u003e#34063\u003c/a\u003e)\nfeat(model-profiles): distribute data across packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34024\"\u003e#34024\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.0.7\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.0.7 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34036\"\u003e#34036\u003c/a\u003e)\nfix(core): fix validation for input variables in f-string templates, restrict functionality supported by jinja2, mustache templates (GHSA-6qv9-48xg-fc7f) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34035\"\u003e#34035\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.0.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.5\u003c/p\u003e\n\u003cp\u003erelease: langchain-core 1.0.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34018\"\u003e#34018\u003c/a\u003e)\nchore: Support tool runtime injection when custom args schema is prov… (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/33999\"\u003e#33999\u003c/a\u003e)\nfeat(core): add proxy support for mermaid png rendering (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/32400\"\u003e#32400\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.0.5\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.0.4\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/langchain-ai/langchain/commit/a0e86b18bf9c120807a8bbf239da0b2dedeb6249\"\u003e\u003ccode\u003ea0e86b1\u003c/code\u003e\u003c/a\u003e release(core): 1.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34253\"\u003e#34253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/6affec92ce4ccc563e03bcd23d7fe9d8547a85f2\"\u003e\u003ccode\u003e6affec9\u003c/code\u003e\u003c/a\u003e fix(core): pass \u003ccode\u003etool_call_id\u003c/code\u003e to \u003ccode\u003eon_tool_start\u003c/code\u003e callback (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34235\"\u003e#34235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a64aee310cd00663ca356658bf9b3fb3ff4cab34\"\u003e\u003ccode\u003ea64aee3\u003c/code\u003e\u003c/a\u003e chore(core): improve typing of messages utils functions (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34225\"\u003e#34225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ba6c2590ae55869a8df7818a47c138dd5091b50e\"\u003e\u003ccode\u003eba6c259\u003c/code\u003e\u003c/a\u003e fix(core): prevent async task garbage collection (RUF006) (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34238\"\u003e#34238\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/bb71f53585cf9b366d93d1a2329c6cfcb139ee66\"\u003e\u003ccode\u003ebb71f53\u003c/code\u003e\u003c/a\u003e chore(core): use anext and deprecate py_anext (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34211\"\u003e#34211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9875ffbabc4cc4dd4ba86f12d75cefc8c81b44c9\"\u003e\u003ccode\u003e9875ffb\u003c/code\u003e\u003c/a\u003e feat(core): support google maps grounding in genai block translator (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34244\"\u003e#34244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b5efafe80c82f72d5aef782032c8b6214a0b0030\"\u003e\u003ccode\u003eb5efafe\u003c/code\u003e\u003c/a\u003e release(openai): 1.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34252\"\u003e#34252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ff3353f02fae82e499b9d69ea61050105d807223\"\u003e\u003ccode\u003eff3353f\u003c/code\u003e\u003c/a\u003e fix(openai): Fixing error that comes up using the Responses API with built-in...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3ace4e36808220d6a1c5402691f5d37867521458\"\u003e\u003ccode\u003e3ace4e3\u003c/code\u003e\u003c/a\u003e docs(core,groq,openai): nits for ref docs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34243\"\u003e#34243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/80c397019f0bc749c8679ed0d87ced3836e5ac5c\"\u003e\u003ccode\u003e80c3970\u003c/code\u003e\u003c/a\u003e docs(core): improve style for refs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/34227\"\u003e#34227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==0.3.76...langchain-core==1.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\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.5 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.5...v0.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.1.1 to 6.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.4.1, 2025-12-07\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize loop for layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3543\"\u003e#3543\u003c/a\u003e) by \u003ca href=\"https://github.com/FelipeErmeson\"\u003e\u003ccode\u003e@​FelipeErmeson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not fail on choice field without /Opt key (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3540\"\u003e#3540\u003c/a\u003e) by \u003ca href=\"https://github.com/jhuber-de\"\u003e\u003ccode\u003e@​jhuber-de\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument possible issues with merge_page and clipping (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3546\"\u003e#3546\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd some notes about library security (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3545\"\u003e#3545\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance (MAINT)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse CORE_FONT_METRICS for widths where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3526\"\u003e#3526\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.4.0...6.4.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.4.0, 2025-11-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReduce default limit for LZW decoding by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParse and format comb fields in text widget annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3519\"\u003e#3519\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSilently ignore Adobe Ascii85 whitespace for suffix detection (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3528\"\u003e#3528\u003c/a\u003e) by \u003ca href=\"https://github.com/mbierma\"\u003e\u003ccode\u003e@​mbierma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.3.0...6.4.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.3.0, 2025-11-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWrap and align text in flattened PDF forms (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3465\"\u003e#3465\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix missing \u0026quot;PreventGC\u0026quot; when cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3520\"\u003e#3520\u003c/a\u003e) by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve JPEG image quality by default (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3516\"\u003e#3516\u003c/a\u003e) by \u003ca href=\"https://github.com/Lucas-C\"\u003e\u003ccode\u003e@​Lucas-C\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.2.0...6.3.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0, 2025-11-09\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'strict' parameter to PDFWriter (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3503\"\u003e#3503\u003c/a\u003e) by \u003ca href=\"https://github.com/Arya-A-Nair\"\u003e\u003ccode\u003e@​Arya-A-Nair\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.4.1, 2025-12-07\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize loop for layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3543\"\u003e#3543\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not fail on choice field without /Opt key (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3540\"\u003e#3540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument possible issues with merge_page and clipping (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3546\"\u003e#3546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd some notes about library security (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3545\"\u003e#3545\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance (MAINT)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse CORE_FONT_METRICS for widths where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3526\"\u003e#3526\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.4.0...6.4.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.4.0, 2025-11-23\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReduce default limit for LZW decoding\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParse and format comb fields in text widget annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3519\"\u003e#3519\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSilently ignore Adobe Ascii85 whitespace for suffix detection (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3528\"\u003e#3528\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.3.0...6.4.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.3.0, 2025-11-16\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWrap and align text in flattened PDF forms (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix missing \u0026quot;PreventGC\u0026quot; when cloning (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3520\"\u003e#3520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve JPEG image quality by default (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3516\"\u003e#3516\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.2.0...6.3.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0, 2025-11-09\u003c/h2\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'strict' parameter to PDFWriter (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3503\"\u003e#3503\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePdfWriter.append fails when there are articles being None (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3509\"\u003e#3509\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\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/py-pdf/pypdf/commit/50ea3c63c155e36a880fa4a18d7552f6d42e7c2d\"\u003e\u003ccode\u003e50ea3c6\u003c/code\u003e\u003c/a\u003e REL: 6.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/fb6f0a13d921fee5f06fa15737025f690034c554\"\u003e\u003ccode\u003efb6f0a1\u003c/code\u003e\u003c/a\u003e DOC: Move version 1 to 2 migration docs to meta (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3547\"\u003e#3547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/502136619334a26c04eac41e9e7d2c0f2008708d\"\u003e\u003ccode\u003e5021366\u003c/code\u003e\u003c/a\u003e DOC: Document possible issues with merge_page and clipping (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3546\"\u003e#3546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/66f97a3760cef7353d3820c2b698a25d37e0a7bc\"\u003e\u003ccode\u003e66f97a3\u003c/code\u003e\u003c/a\u003e PI: Optimize loop for layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3543\"\u003e#3543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a0c8406c86cc68fa87a52ed406f662582276e871\"\u003e\u003ccode\u003ea0c8406\u003c/code\u003e\u003c/a\u003e DOC: Add some notes about library security (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3545\"\u003e#3545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c90fb727b16a49eb6989260c6cf1fdbf3331aa17\"\u003e\u003ccode\u003ec90fb72\u003c/code\u003e\u003c/a\u003e MAINT: Use CORE_FONT_METRICS for widths where possible (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3526\"\u003e#3526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/7f8405cb975c6f97c7a3beefd9a05669279ce7ae\"\u003e\u003ccode\u003e7f8405c\u003c/code\u003e\u003c/a\u003e MAINT: Rename functions for better readability (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3538\"\u003e#3538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2ac3e22df8c47bda8b6f0f0db70ce89dc163e8ef\"\u003e\u003ccode\u003e2ac3e22\u003c/code\u003e\u003c/a\u003e DEV: Update pinned fontTools (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3544\"\u003e#3544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/28dafb10e230886652a9e0a90769a99df9377107\"\u003e\u003ccode\u003e28dafb1\u003c/code\u003e\u003c/a\u003e MAINT: Change error message (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3539\"\u003e#3539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/945e107b991ea17cad67bac1ceff614810b46960\"\u003e\u003ccode\u003e945e107\u003c/code\u003e\u003c/a\u003e DEV: Unify Python version specifiers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3542\"\u003e#3542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.1.1...6.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tiktoken` from 0.9.0 to 0.12.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/tiktoken/blob/main/CHANGELOG.md\"\u003etiktoken's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v0.12.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuild wheels for Python 3.14\u003c/li\u003e\n\u003cli\u003eBuild musllinux aarch64 wheels\u003c/li\u003e\n\u003cli\u003eSupport for free-threaded Python\u003c/li\u003e\n\u003cli\u003eUpdate version of \u003ccode\u003epyo3\u003c/code\u003e and \u003ccode\u003erustc-hash\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid use of \u003ccode\u003eblobfile\u003c/code\u003e for reading local files\u003c/li\u003e\n\u003cli\u003eRecognise \u003ccode\u003egpt-5\u003c/code\u003e model identifier\u003c/li\u003e\n\u003cli\u003eMinor performance improvement for file reading\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[v0.11.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003eGPT-5\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate version of \u003ccode\u003epyo3\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse new Rust edition\u003c/li\u003e\n\u003cli\u003eFix special token handling in \u003ccode\u003eencode_to_numpy\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBetter error handling\u003c/li\u003e\n\u003cli\u003eImprovements to private APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[v0.10.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for newer models\u003c/li\u003e\n\u003cli\u003eImprovements to private APIs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/97e49cbadd500b5cc9dbb51a486f0b42e6701bee\"\u003e\u003ccode\u003e97e49cb\u003c/code\u003e\u003c/a\u003e Release 0.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/948549882b36e8cc67e5cac885c3d1ed9c70d59f\"\u003e\u003ccode\u003e9485498\u003c/code\u003e\u003c/a\u003e Partial sync of codebase (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/451\"\u003e#451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/00ff187f59453a81683292c66cfd349ffa752b8d\"\u003e\u003ccode\u003e00ff187\u003c/code\u003e\u003c/a\u003e Add GPT-5 model support with o200k_base encoding (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/440\"\u003e#440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/5ee89ca1fa2ca12776bbd05785907f83d6a6b233\"\u003e\u003ccode\u003e5ee89ca\u003c/code\u003e\u003c/a\u003e chore: update dependencies (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/449\"\u003e#449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/2ab6d3706d557b560b200be48e6a32324682c9a3\"\u003e\u003ccode\u003e2ab6d37\u003c/code\u003e\u003c/a\u003e Support the free-threaded build (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/443\"\u003e#443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/82dc3bbacc82aa766e6824def0dbf57b3537b37b\"\u003e\u003ccode\u003e82dc3bb\u003c/code\u003e\u003c/a\u003e bump PyO3 version (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/444\"\u003e#444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/eedc856364506a9d4651645a0290eb0ba81e6935\"\u003e\u003ccode\u003eeedc856\u003c/code\u003e\u003c/a\u003e Partial sync of codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/5818d566268693d947c06ba76c3be2e48d8c6ded\"\u003e\u003ccode\u003e5818d56\u003c/code\u003e\u003c/a\u003e Partial sync of codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/3591ff175d6a80efbe4fcc7f0e219ddd4b8c52f1\"\u003e\u003ccode\u003e3591ff1\u003c/code\u003e\u003c/a\u003e Sync codebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/4560a8896f5fb1d35c6f8fd6eee0399f9a1a27ca\"\u003e\u003ccode\u003e4560a88\u003c/code\u003e\u003c/a\u003e Sync codebase (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/389\"\u003e#389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/openai/tiktoken/compare/0.9.0...0.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.5.0 to 2.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6.1\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3731\"\u003e#3731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a security issue where streaming API could improperly handle highly compressed HTTP content (\u0026quot;decompression bombs\u0026quot;) leading to excessive resource consumption even when a small amount of data was requested. Reading small chunks of compressed data is safer and much more efficient now. (CVE-2025-66471 reported by \u003ca href=\"https://github.com/Cycloctane\"\u003e\u003ccode\u003e@​Cycloctane\u003c/code\u003e\u003c/a\u003e, 8.9 High, GHSA-2xpw-w6gg-jr37)\u003c/li\u003e\n\u003cli\u003eFixed a security issue where an attacker could compose an HTTP response with virtually unlimited links in the \u003ccode\u003eContent-Encoding\u003c/code\u003e header, potentially leading to a denial of service (DoS) attack by exhausting system resources during decoding. The number of allowed chained encodings is now limited to 5. (CVE-2025-66418 reported by \u003ca href=\"https://github.com/illia-v\"\u003e\u003ccode\u003e@​illia-v\u003c/code\u003e\u003c/a\u003e, 8.9 High, GHSA-gm62-xv2j-4w53)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!IMPORTANT]\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf urllib3 is not installed with the optional \u003ccode\u003eurllib3[brotli]\u003c/code\u003e extra, but your environment contains a Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to  benefit from the security fixes and avoid warnings. Prefer using  \u003ccode\u003eurllib3[brotli]\u003c/code\u003e to install a compatible Brotli package automatically.\u003c/li\u003e\n\u003cli\u003eIf you use custom decompressors, please make sure to update them to  respect the changed API of \u003ccode\u003eurllib3.response.ContentDecoder\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnabled retrieval, deletion, and membership testing in \u003ccode\u003eHTTPHeaderDict\u003c/code\u003e using bytes keys. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3653\"\u003e#3653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded host and port information to string representations of \u003ccode\u003eHTTPConnection\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3666\"\u003e#3666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 free-threading builds explicitly. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3696\"\u003e#3696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers\u003c/code\u003e. Removed the \u003ccode\u003eHTTPResponse.getheader(name, default)\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers.get(name, default)\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed redirect handling in \u003ccode\u003eurllib3.PoolManager\u003c/code\u003e when an integer is passed for the retries parameter. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3649\"\u003e#3649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPConnectionPool\u003c/code\u003e when used in Emscripten with no explicit port. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed handling of \u003ccode\u003eSSLKEYLOGFILE\u003c/code\u003e with expandable variables. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3700\"\u003e#3700\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\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/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.6.1 (2025-12-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore previously removed \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e and\n\u003ccode\u003eHTTPResponse.getheader()\u003c/code\u003e methods.\n(\u003ccode\u003e[#3731](https://github.com/urllib3/urllib3/issues/3731) \u0026lt;https://github.com/urllib3/urllib3/issues/3731\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.6.0 (2025-12-05)\u003c/h1\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a security issue where streaming API could improperly handle highly\ncompressed HTTP content (\u0026quot;decompression bombs\u0026quot;) leading to excessive resource\nconsumption even when a small amount of data was requested. Reading small\nchunks of compressed data is safer and much more efficient now.\n(\u003ccode\u003eGHSA-2xpw-w6gg-jr37 \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-2xpw-w6gg-jr37\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFixed a security issue where an attacker could compose an HTTP response with\nvirtually unlimited links in the \u003ccode\u003eContent-Encoding\u003c/code\u003e header, potentially\nleading to a denial of service (DoS) attack by exhausting system resources\nduring decoding. The number of allowed chained encodings is now limited to 5.\n(\u003ccode\u003eGHSA-gm62-xv2j-4w53 \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-gm62-xv2j-4w53\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. caution::\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIf urllib3 is not installed with the optional \u003ccode\u003eurllib3[brotli]\u003c/code\u003e extra, but\nyour environment contains a Brotli/brotlicffi/brotlipy package anyway, make\nsure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to\nbenefit from the security fixes and avoid warnings. Prefer using\n\u003ccode\u003eurllib3[brotli]\u003c/code\u003e to install a compatible Brotli package automatically.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf you use custom decompressors, please make sure to update them to\nrespect the changed API of \u003ccode\u003eurllib3.response.ContentDecoder\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnabled retrieval, deletion, and membership testing in \u003ccode\u003eHTTPHeaderDict\u003c/code\u003e using bytes keys. (\u003ccode\u003e[#3653](https://github.com/urllib3/urllib3/issues/3653) \u0026lt;https://github.com/urllib3/urllib3/issues/3653\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded host and port information to string representations of \u003ccode\u003eHTTPConnection\u003c/code\u003e. (\u003ccode\u003e[#3666](https://github.com/urllib3/urllib3/issues/3666) \u0026lt;https://github.com/urllib3/urllib3/issues/3666\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 free-threading builds explicitly. (\u003ccode\u003e[#3696](https://github.com/urllib3/urllib3/issues/3696) \u0026lt;https://github.com/urllib3/urllib3/issues/3696\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the \u003ccode\u003eHTTPResponse.getheaders()\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers\u003c/code\u003e.\nRemoved the \u003ccode\u003eHTTPResponse.getheader(name, default)\u003c/code\u003e method in favor of \u003ccode\u003eHTTPResponse.headers.get(name, default)\u003c/code\u003e. (\u003ccode\u003e[#3622](https://github.com/urllib3/urllib3/issues/3622) \u0026lt;https://github.com/urllib3/urllib3/issues/3622\u0026gt;\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/urllib3/urllib3/commit/bfe8e198a13800e3ee8ef8124a8928acb170c843\"\u003e\u003ccode\u003ebfe8e19\u003c/code\u003e\u003c/a\u003e Release 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3ceeb84107946de22e9753fc1e6c075ab36d2c4c\"\u003e\u003ccode\u003e3ceeb84\u003c/code\u003e\u003c/a\u003e Restore \u003ccode\u003egetheaders()\u003c/code\u003e and \u003ccode\u003egetheader()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/720f484b605f18887a48eef448d0084e2b76902d\"\u003e\u003ccode\u003e720f484\u003c/code\u003e\u003c/a\u003e Release 2.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/24d7b67eac89f94e11003424bcf0d8f7b72222a8\"\u003e\u003ccode\u003e24d7b67\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/c19571de34c47de3a766541b041637ba5f716ed7\"\u003e\u003ccode\u003ec19571d\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/816fcf04528bc0f89672e13398eb813dcc892490\"\u003e\u003ccode\u003e816fcf0\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3725\"\u003e#3725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/18af0a10efc4c99dd028f7ad5a461470b9a8b0fd\"\u003e\u003ccode\u003e18af0a1\u003c/code\u003e\u003c/a\u003e Improve speed of \u003ccode\u003eBytesQueueBuffer.get()\u003c/code\u003e by using memoryview (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/1f6abac3e6d426c3939b8a17cf4afa099e691ab2\"\u003e\u003ccode\u003e1f6abac\u003c/code\u003e\u003c/a\u003e Bump versions of pre-commit hooks (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3716\"\u003e#3716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/1c8fbf787b8e6ed151842c5d6874c9d5bdbf1d0b\"\u003e\u003ccode\u003e1c8fbf7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3722\"\u003e#3722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/7784b9eee95b7c90802c02b111e98df70259ae4f\"\u003e\u003ccode\u003e7784b9e\u003c/code\u003e\u003c/a\u003e Add Python 3.15 to CI (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.5.0...2.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependenc...\n\n_Description has been truncated_","html_url":"https://github.com/awslabs/LISA/pull/600","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/600","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/600/packages"}},{"old_version":"2.8.0","new_version":"3.1.0","update_type":"major","path":"/backend","pr_created_at":"2025-12-01T02:15:07.000Z","version_change":"2.8.0 → 3.1.0","issue":{"uuid":"3678917144","node_id":"PR_kwDOKdDCc862PFDM","number":19634,"state":"closed","title":"chore(deps): bump opensearch-py from 2.8.0 to 3.1.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2025-12-01T02:15:30.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T02:15:07.000Z","updated_at":"2025-12-01T02:15:39.000Z","time_to_close":23,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 2.8.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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix memory leak in parallel_bulk (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/981\"\u003e981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=2.8.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/open-webui/open-webui/pull/19634","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-webui%2Fopen-webui/issues/19634","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19634/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2025-11-21T18:05:31.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3652621699","node_id":"PR_kwDOPGTqK8604GpZ","number":177,"state":"open","title":"Upgrade: [dependabot] - bump opensearch-py from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-21T18:05:31.000Z","updated_at":"2025-11-21T18:09:06.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Upgrade: [dependabot] -","packages":[{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/NHSDigital/eps-assist-me/pull/177","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NHSDigital%2Feps-assist-me/issues/177","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/177/packages"}},{"old_version":"3.0.0","new_version":"3.1.0","update_type":"minor","path":null,"pr_created_at":"2025-11-21T09:18:39.000Z","version_change":"3.0.0 → 3.1.0","issue":{"uuid":"3650863960","node_id":"PR_kwDOAIsq8s60yIOz","number":19091,"state":"closed","title":"chore(deps): bump opensearch-py from 3.0.0 to 3.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-17T16:18:38.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-21T09:18:39.000Z","updated_at":"2025-12-17T16:18:48.000Z","time_to_close":2271599,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"opensearch-py","old_version":"3.0.0","new_version":"3.1.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) 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/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/911\"\u003eopensearch-project/opensearch-py#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erepurpose elasticsearch dense_vector field for knn_vector by \u003ca href=\"https://github.com/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/918\"\u003eopensearch-project/opensearch-py#918\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBumps aiohttp from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003eopensearch-project/opensearch-py#920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/930\"\u003eopensearch-project/opensearch-py#930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit proxy support in RequestsHttpConnection by \u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dblock@ for MAINTAINERS. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/934\"\u003eopensearch-project/opensearch-py#934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove client tests out of \u003cstrong\u003einit\u003c/strong\u003e.py file to ensure they run by \u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.25.1 to \u0026lt;=1.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003eopensearch-project/opensearch-py#936\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 1.9.3 to 2.0.2 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003eopensearch-project/opensearch-py#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/933\"\u003eopensearch-project/opensearch-py#933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=1.1.0 to \u0026lt;=1.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003eopensearch-project/opensearch-py#950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding Dependabot configuration to bump github-actions by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/947\"\u003eopensearch-project/opensearch-py#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 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/opensearch-project/opensearch-py/pull/957\"\u003eopensearch-project/opensearch-py#957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Async request signer (issue \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/924\"\u003e#924\u003c/a\u003e) by \u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003eopensearch-project/opensearch-py#958\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump peter-evans/create-pull-request from 6 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/opensearch-project/opensearch-py/pull/959\"\u003eopensearch-project/opensearch-py#959\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/opensearch-project/opensearch-py/pull/961\"\u003eopensearch-project/opensearch-py#961\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump dangoslen/dependabot-changelog-helper from 3 to 4 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003eopensearch-project/opensearch-py#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump stefanzweifel/git-auto-commit-action 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/opensearch-project/opensearch-py/pull/962\"\u003eopensearch-project/opensearch-py#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact 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/opensearch-project/opensearch-py/pull/968\"\u003eopensearch-project/opensearch-py#968\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 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/opensearch-project/opensearch-py/pull/967\"\u003eopensearch-project/opensearch-py#967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump VachaShah/backport from 1.1.4 to 2.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003eopensearch-project/opensearch-py#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py to reflect the latest OpenSearch API spec by \u003ca href=\"https://github.com/opensearch-trigger-bot\"\u003e\u003ccode\u003e@​opensearch-trigger-bot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/963\"\u003eopensearch-project/opensearch-py#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump minimum supported python 3.8 -\u0026gt; 3.10 by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 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/opensearch-project/opensearch-py/pull/972\"\u003eopensearch-project/opensearch-py#972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-java from 4 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/opensearch-project/opensearch-py/pull/974\"\u003eopensearch-project/opensearch-py#974\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/github-script from 7 to 8 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/opensearch-project/opensearch-py/pull/973\"\u003eopensearch-project/opensearch-py#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd transport-grpc client library by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/977\"\u003eopensearch-project/opensearch-py#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump lycheeverse/lychee-action from 2.0.2 to 2.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003eopensearch-project/opensearch-py#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Changelog entry by \u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/979\"\u003eopensearch-project/opensearch-py#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreparing for release, 3.1.0 by \u003ca href=\"https://github.com/florianvazelle\"\u003e\u003ccode\u003e@​florianvazelle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/971\"\u003eopensearch-project/opensearch-py#971\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/ganondev\"\u003e\u003ccode\u003e@​ganondev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003eopensearch-project/opensearch-py#925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fopina\"\u003e\u003ccode\u003e@​fopina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003eopensearch-project/opensearch-py#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesserobles\"\u003e\u003ccode\u003e@​jesserobles\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003eopensearch-project/opensearch-py#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snstanton\"\u003e\u003ccode\u003e@​snstanton\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003eopensearch-project/opensearch-py#932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/finnegancarroll\"\u003e\u003ccode\u003e@​finnegancarroll\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003eopensearch-project/opensearch-py#966\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/eaf4bf830fac71c6800c3fb2b6293de0641f1ca7\"\u003eopensearch-api-specification@eaf4bf8\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/3be80d700cccc60093ad6265a9582572c0b1e9f4\"\u003eopensearch-api-specification@3be80d7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/89c586cfe65584f789e8fccc5f6c416cee1e8b3b\"\u003eopensearch-api-specification@89c586c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/cac8c5d8ab39c702c6c428cfdc3a3a710cf2c0b0\"\u003eopensearch-api-specification@cac8c5d\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/578a78dcec746e81da88f81ad442ab1836db7694\"\u003eopensearch-api-specification@578a78d\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eDenseVector\u003c/code\u003e field type to \u003ccode\u003eKnnVector\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/925\"\u003e925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate python 3.8 and 3.9 support which are end of life. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e966\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved client tests to dedicated files to ensure they are run (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/944\"\u003e944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Async request signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/932\"\u003e932\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.9.4,\u0026lt;4 to \u0026gt;=3.10.11,\u0026lt;4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003eaiohttp\u003c/code\u003e from \u0026gt;=3.10.11 to \u0026gt;=3.12.14 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.25.1 to \u0026lt;=1.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/936\"\u003e#936\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/950\"\u003e#950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumps \u003ccode\u003elycheeverse/lychee-action\u003c/code\u003e from 1.9.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/946\"\u003e#946\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/download-artifact\u003c/code\u003e from 4 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/957\"\u003e#957\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/cache\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/958\"\u003e#958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epeter-evans/create-pull-request\u003c/code\u003e from 6 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/959\"\u003e#959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-python\u003c/code\u003e from 5 to 6 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003edangoslen/dependabot-changelog-helper\u003c/code\u003e from 3 to 4 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/960\"\u003e#960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003estefanzweifel/git-auto-commit-action\u003c/code\u003e from 5 to 7 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/962\"\u003e#962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/checkout\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/967\"\u003e#967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eVachaShah/backport\u003c/code\u003e from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/github-script\u003c/code\u003e from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/upload-artifact\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003eactions/setup-java\u003c/code\u003e from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/974\"\u003e#974\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/opensearch-project/opensearch-py/commit/4ad9a25be8f16264ba26bbc08ac59be0dba88c56\"\u003e\u003ccode\u003e4ad9a25\u003c/code\u003e\u003c/a\u003e Preparing for release, 3.1.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/0979c33e643baac8150c52e4057f9453b7b2c113\"\u003e\u003ccode\u003e0979c33\u003c/code\u003e\u003c/a\u003e Fix Changelog entry (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/93ea96fb6cd98e1387f50c855dad7e821c23f237\"\u003e\u003ccode\u003e93ea96f\u003c/code\u003e\u003c/a\u003e Bump lycheeverse/lychee-action from 2.0.2 to 2.7.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/e962fbe9a0550df2c63ecf4406a272f9e18d41bf\"\u003e\u003ccode\u003ee962fbe\u003c/code\u003e\u003c/a\u003e Add transport-grpc client library (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1e738e9f7d9cf22c1e5b4615395c40d082fd2014\"\u003e\u003ccode\u003e1e738e9\u003c/code\u003e\u003c/a\u003e Bump actions/github-script from 7 to 8 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/973\"\u003e#973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/861bee4a97fa086863af6ad93cac1c6c16f9258d\"\u003e\u003ccode\u003e861bee4\u003c/code\u003e\u003c/a\u003e Bump actions/setup-java from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/d5f0078cce8a2de4dd3f64b3cfe147dad200f3e8\"\u003e\u003ccode\u003ed5f0078\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/2369c9415ce68aa600b0c28fa364a2fb3c92a1d2\"\u003e\u003ccode\u003e2369c94\u003c/code\u003e\u003c/a\u003e Bump minimum supported python 3.8 -\u0026gt; 3.10 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/966\"\u003e#966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4ef46e5c17234e3e9b09338c98a599e18d42f572\"\u003e\u003ccode\u003e4ef46e5\u003c/code\u003e\u003c/a\u003e Updated opensearch-py to reflect the latest OpenSearch API spec (2025-11-04) ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/68204b061c81e576a2c738d0b3903cde249757c5\"\u003e\u003ccode\u003e68204b0\u003c/code\u003e\u003c/a\u003e Bump VachaShah/backport from 1.1.4 to 2.2.0 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/969\"\u003e#969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v3.0.0...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/pypi/warehouse/pull/19091","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypi%2Fwarehouse/issues/19091","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19091/packages"}},{"old_version":"2.8.0","new_version":"3.0.0","update_type":"major","path":null,"pr_created_at":"2025-10-15T06:00:36.079Z","version_change":"2.8.0 → 3.0.0","issue":{"uuid":"2912889534","node_id":"PR_kwDOL7kQEs6tnyq-","number":504,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-15T06:00:36.079Z","updated_at":"2025-10-18T20:21:27.375Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":27,"packages":[{"name":"pyarrow","old_version":"17.0.0","new_version":"21.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"datasets","old_version":"2.20.0","new_version":"4.2.0","repository_url":"https://github.com/huggingface/datasets"},{"name":"fastapi","old_version":"0.111.1","new_version":"0.119.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"locust","old_version":"2.25.0","new_version":"2.41.6","repository_url":"https://github.com/locustio/locust"},{"name":"mangum","old_version":"0.17.0","new_version":"0.19.0","repository_url":"https://github.com/Kludex/mangum"},{"name":"pre-commit","old_version":"3.5.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pydantic","old_version":"2.11.9","new_version":"2.12.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"pytest-asyncio","old_version":"0.25","new_version":"1.2.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"uvicorn","old_version":"0.22.0","new_version":"0.37.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"boto3","old_version":"1.35.95","new_version":"1.40.51","repository_url":"https://github.com/boto/boto3"},{"name":"tiktoken","old_version":"0.11.0","new_version":"0.12.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"pypdf","old_version":"6.0.0","new_version":"6.1.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"langchain-community","old_version":"0.3.27","new_version":"0.3.31","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"0.3.76","new_version":"0.3.79","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"0.3.33","new_version":"0.3.35","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.1","repository_url":"https://github.com/tkem/cachetools"},{"name":"pytest","old_version":"8.3.2","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"moto","old_version":"5.0.3","new_version":"5.1.14"},{"name":"lxml","old_version":"5.3.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"black","old_version":"24.3.0","new_version":"25.9.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":"mypy","old_version":"1.9.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pydantic-core","old_version":"2.33.2","new_version":"2.41.3","repository_url":"https://github.com/pydantic/pydantic-core"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pyarrow](https://github.com/apache/arrow) | `17.0.0` | `21.0.0` |\n| [datasets](https://github.com/huggingface/datasets) | `2.20.0` | `4.2.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.1` | `0.119.0` |\n| [locust](https://github.com/locustio/locust) | `2.25.0` | `2.41.6` |\n| [mangum](https://github.com/Kludex/mangum) | `0.17.0` | `0.19.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `3.5.0` | `4.3.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.9` | `2.12.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.25` | `1.2.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.22.0` | `0.37.0` |\n| [boto3](https://github.com/boto/boto3) | `1.35.95` | `1.40.51` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.11.0` | `0.12.0` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.0.0` | `6.1.1` |\n| [langchain-community](https://github.com/langchain-ai/langchain) | `0.3.27` | `0.3.31` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `0.3.76` | `0.3.79` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `0.3.33` | `0.3.35` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.2` | `8.4.2` |\n| [moto[all]](https://github.com/getmoto/moto) | `5.0.3` | `5.1.14` |\n| [lxml](https://github.com/lxml/lxml) | `5.3.0` | `6.0.2` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [black](https://github.com/psf/black) | `24.3.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.0.0` | `7.3.0` |\n| [mypy](https://github.com/python/mypy) | `1.9.0` | `1.18.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.3` |\n\n\nUpdates `pyarrow` from 17.0.0 to 21.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/apache/arrow/releases\"\u003epyarrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eApache Arrow 21.0.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/21.0.0.html\"\u003ehttps://arrow.apache.org/release/21.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC6\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC6\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC5\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC5\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC4\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC4\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC3\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC3\u003c/p\u003e\n\u003ch2\u003eApache Arrow 21.0.0 RC2\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 21.0.0 RC2\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/20.0.0.html\"\u003ehttps://arrow.apache.org/release/20.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0 RC2\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 20.0.0 RC2\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0 RC1\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 20.0.0 RC1\u003c/p\u003e\n\u003ch2\u003eApache Arrow 20.0.0 RC0\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 20.0.0 RC0\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.1\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/19.0.1.html\"\u003ehttps://arrow.apache.org/release/19.0.1.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.1 RC1\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 19.0.1 RC1\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.1 RC0\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 19.0.1 RC0\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/19.0.0.html\"\u003ehttps://arrow.apache.org/release/19.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 19.0.0 RC0\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 19.0.0 RC0\u003c/p\u003e\n\u003ch2\u003eApache Arrow 18.1.0\u003c/h2\u003e\n\u003cp\u003eRelease Notes URL: \u003ca href=\"https://arrow.apache.org/release/18.1.0.html\"\u003ehttps://arrow.apache.org/release/18.1.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eApache Arrow 18.1.0 RC2\u003c/h2\u003e\n\u003cp\u003eRelease Notes: Release Candidate: 18.1.0 RC2\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/apache/arrow/commit/ee4d09ebef61c663c1efbfa4c18e518a03b798be\"\u003e\u003ccode\u003eee4d09e\u003c/code\u003e\u003c/a\u003e MINOR: [Release] Update versions for 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/f13a5796008e3a5e546af1a7b2be0fbd3c148c26\"\u003e\u003ccode\u003ef13a579\u003c/code\u003e\u003c/a\u003e MINOR: [Release] Update .deb/.rpm changelogs for 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/6fd2a167e0ed74dbe4c059e579a561fcc2aae11f\"\u003e\u003ccode\u003e6fd2a16\u003c/code\u003e\u003c/a\u003e MINOR: [Release] Update CHANGELOG.md for 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/cf261bf58ae74a1f7fa99d81c201ca8e1d679c9b\"\u003e\u003ccode\u003ecf261bf\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47078\"\u003eGH-47078\u003c/a\u003e: [Release] Ensure using cloned apache/arrow for reproducible check (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/ddbc3dc005dfdde5a79d42cb5953190479b12b73\"\u003e\u003ccode\u003eddbc3dc\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47074\"\u003eGH-47074\u003c/a\u003e: [Release] Use reproducible mtime for csharp/ in source archive (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47\"\u003e#47\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/0534eb2d279f445ac67b99a22eca344484749b6f\"\u003e\u003ccode\u003e0534eb2\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47071\"\u003eGH-47071\u003c/a\u003e: [Release] Dereference all hard links in source archive (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47072\"\u003e#47072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/f845b4184664aee522f7fd73864d3093e84b6580\"\u003e\u003ccode\u003ef845b41\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47069\"\u003eGH-47069\u003c/a\u003e: [Release] Add missing \u0026quot;needs: target\u0026quot; (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47070\"\u003e#47070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/1c08f8ee6947bd2a9bffb441af946c6a7373015b\"\u003e\u003ccode\u003e1c08f8e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47067\"\u003eGH-47067\u003c/a\u003e: [Release] Fix wrong GitHub Actions context in verify_rc.yml (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47068\"\u003e#47068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/70e5c51e6d5de1ca6f669b47ff0b98e1075336d0\"\u003e\u003ccode\u003e70e5c51\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47065\"\u003eGH-47065\u003c/a\u003e: [Release] Fix timeout key in verify_rc.yml (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47066\"\u003e#47066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apache/arrow/commit/254a85c8bddb52eef03d623882836717f027061d\"\u003e\u003ccode\u003e254a85c\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/apache/arrow/issues/47063\"\u003eGH-47063\u003c/a\u003e: [Release] Define missing RELEASE_TARBALL (\u003ca href=\"https://redirect.github.com/apache/arrow/issues/47064\"\u003e#47064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/apache/arrow/compare/go/v17.0.0...apache-arrow-21.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `datasets` from 2.20.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/datasets/releases\"\u003edatasets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.0\u003c/h2\u003e\n\u003ch2\u003eDataset Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSample without replacement option when interleaving datasets by \u003ca href=\"https://github.com/radulescupetru\"\u003e\u003ccode\u003e@​radulescupetru\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7786\"\u003ehuggingface/datasets#7786\u003c/a\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eds = interleave_datasets(datasets, stopping_strategy=\u0026quot;all_exhausted_without_replacement\u0026quot;)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eParquet: add \u003ccode\u003eon_bad_files\u003c/code\u003e argument to error/warn/skip bad files by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7806\"\u003ehuggingface/datasets#7806\u003c/a\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eds = load_dataset(parquet_dataset_id, on_bad_files=\u0026quot;warn\u0026quot;)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd parquet scan options and docs by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7801\"\u003ehuggingface/datasets#7801\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs to select columns and filter data efficiently\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eds = load_dataset(parquet_dataset_id, columns=[\u0026quot;col_0\u0026quot;, \u0026quot;col_1\u0026quot;])\nds = load_dataset(parquet_dataset_id, filters=[(\u0026quot;col_0\u0026quot;, \u0026quot;==\u0026quot;, 0)])\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003enew argument to control buffering and caching when streaming\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efragment_scan_options = pyarrow.dataset.ParquetFragmentScanOptions(cache_options=pyarrow.CacheOptions(prefetch_limit=1, range_size_limit=128 \u0026lt;\u0026lt; 20))\nds = load_dataset(parquet_dataset_id, streaming=True, fragment_scan_options=fragment_scan_options)\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocument HDF5 support by \u003ca href=\"https://github.com/klamike\"\u003e\u003ccode\u003e@​klamike\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7740\"\u003ehuggingface/datasets#7740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate tips in docs by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7790\"\u003ehuggingface/datasets#7790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: avoid some copies in torch formatter by \u003ca href=\"https://github.com/drbh\"\u003e\u003ccode\u003e@​drbh\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7787\"\u003ehuggingface/datasets#7787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport huggingface_hub v0.x and v1.x by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7783\"\u003ehuggingface/datasets#7783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDefine CI future by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7799\"\u003ehuggingface/datasets#7799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMore Parquet streaming docs by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7803\"\u003ehuggingface/datasets#7803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLess api calls when resolving data_files by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7805\"\u003ehuggingface/datasets#7805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etypo by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7807\"\u003ehuggingface/datasets#7807\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/drbh\"\u003e\u003ccode\u003e@​drbh\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7787\"\u003ehuggingface/datasets#7787\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/huggingface/datasets/compare/4.1.1...4.2.0\"\u003ehttps://github.com/huggingface/datasets/compare/4.1.1...4.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix iterate nested field by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7775\"\u003ehuggingface/datasets#7775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for arrow iterable when concatenating or interleaving by \u003ca href=\"https://github.com/radulescupetru\"\u003e\u003ccode\u003e@​radulescupetru\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7771\"\u003ehuggingface/datasets#7771\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix empty dataset to_parquet by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7779\"\u003ehuggingface/datasets#7779\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/huggingface/datasets/commit/7e1350b41d19eabc961e7de9e26f1aa09f18e110\"\u003e\u003ccode\u003e7e1350b\u003c/code\u003e\u003c/a\u003e release: 4.2.0 (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7808\"\u003e#7808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/fd8d287a98c4970d4634f92f5d7b74eb73e7dca4\"\u003e\u003ccode\u003efd8d287\u003c/code\u003e\u003c/a\u003e typo (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7807\"\u003e#7807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/5eec91a1a8634f9a1bd5bbbb19ed116d6bffc6e1\"\u003e\u003ccode\u003e5eec91a\u003c/code\u003e\u003c/a\u003e Parquet: add \u003ccode\u003eon_bad_file\u003c/code\u003e argument to error/warn/skip bad files (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7806\"\u003e#7806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/02ee330625d3276b57b88cd513ab628bf38d1a3e\"\u003e\u003ccode\u003e02ee330\u003c/code\u003e\u003c/a\u003e Less api calls when resolving data_files (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7805\"\u003e#7805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/cfcdfce542f7ea6a0b98fafa1fb8a78d65c960b5\"\u003e\u003ccode\u003ecfcdfce\u003c/code\u003e\u003c/a\u003e More Parquet streaming docs (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7803\"\u003e#7803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/4e18df164eec0a4472cb7703ef224e213b1e428d\"\u003e\u003ccode\u003e4e18df1\u003c/code\u003e\u003c/a\u003e Add parquet scan options and docs (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7801\"\u003e#7801\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/6f2502c5a026caa89839713f6f7c8b958e5e83eb\"\u003e\u003ccode\u003e6f2502c\u003c/code\u003e\u003c/a\u003e Sample without replacement option when interleaving datasets (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7786\"\u003e#7786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/095c7dc542929ccd45fddf2bad578f75a07caa29\"\u003e\u003ccode\u003e095c7dc\u003c/code\u003e\u003c/a\u003e Define CI future (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7799\"\u003e#7799\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/a0c786c73a165415ca5f7a2334fdbe787a602167\"\u003e\u003ccode\u003ea0c786c\u003c/code\u003e\u003c/a\u003e Support huggingface_hub v0.x and v1.x (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7783\"\u003e#7783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/datasets/commit/c412a6f5a50955e141c5169bf7abe005d10228d2\"\u003e\u003ccode\u003ec412a6f\u003c/code\u003e\u003c/a\u003e feat: avoid some copies in torch formatter (\u003ca href=\"https://redirect.github.com/huggingface/datasets/issues/7787\"\u003e#7787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/datasets/compare/2.20.0...4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.111.1 to 0.119.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.119.0\u003c/h2\u003e\n\u003cp\u003eFastAPI now (temporarily) supports both Pydantic v2 models and \u003ccode\u003epydantic.v1\u003c/code\u003e models at the same time in the same app, to make it easier for any FastAPI apps still using Pydantic v1 to gradually but quickly \u003cstrong\u003emigrate to Pydantic v2\u003c/strong\u003e.\u003c/p\u003e\n\u003cpre lang=\"Python\"\u003e\u003ccode\u003efrom fastapi import FastAPI\nfrom pydantic import BaseModel as BaseModelV2\nfrom pydantic.v1 import BaseModel\n\u003cp\u003eclass Item(BaseModel):\u003cbr /\u003e\nname: str\u003cbr /\u003e\ndescription: str | None = None\u003c/p\u003e\n\u003cp\u003eclass ItemV2(BaseModelV2):\u003cbr /\u003e\ntitle: str\u003cbr /\u003e\nsummary: str | None = None\u003c/p\u003e\n\u003cp\u003eapp = FastAPI()\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/app\"\u003e\u003ccode\u003e@​app\u003c/code\u003e\u003c/a\u003e.post(\u0026quot;/items/\u0026quot;, response_model=ItemV2)\u003cbr /\u003e\ndef create_item(item: Item):\u003cbr /\u003e\nreturn {\u0026quot;title\u0026quot;: item.name, \u0026quot;summary\u0026quot;: item.description}\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAdding this feature was a big effort with the main objective of making it easier for the few applications still stuck in Pydantic v1 to migrate to Pydantic v2.\u003c/p\u003e\n\u003cp\u003eAnd with this, support for \u003cstrong\u003ePydantic v1 is now deprecated\u003c/strong\u003e and will be \u003cstrong\u003eremoved\u003c/strong\u003e from FastAPI in a future version soon.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: have in mind that the Pydantic team already stopped supporting Pydantic v1 for recent versions of Python, starting with Python 3.14.\u003c/p\u003e\n\u003cp\u003eYou can read in the docs more about how to \u003ca href=\"https://fastapi.tiangolo.com/how-to/migrate-from-pydantic-v1-to-pydantic-v2/\"\u003eMigrate from Pydantic v1 to Pydantic v2\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003efrom pydantic.v1 import BaseModel\u003c/code\u003e, mixed Pydantic v1 and v2 models in the same app. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14168\"\u003e#14168\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.118.3\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add support for Python 3.14. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14165\"\u003e#14165\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.118.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix tagged discriminated union not recognized as body field. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12942\"\u003e#12942\u003c/a\u003e by \u003ca href=\"https://github.com/frankie567\"\u003e\u003ccode\u003e@​frankie567\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2e721e1b02186467dc3a7a95dfe45d8e7bd7d0d9\"\u003e\u003ccode\u003e2e721e1\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.119.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fc7a0686af29c7793b3cc999f1af47bf05f5fa74\"\u003e\u003ccode\u003efc7a068\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3a3879b2c3c33daf91121b30c78a41e1d8440a3d\"\u003e\u003ccode\u003e3a3879b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d34918abf00c93ac592c5d1d1c55650d8c1b92ec\"\u003e\u003ccode\u003ed34918a\u003c/code\u003e\u003c/a\u003e ✨ Add support for \u003ccode\u003efrom pydantic.v1 import BaseModel\u003c/code\u003e, mixed Pydantic v1 and ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/352dbefc634b21cff94663be1ab0a1aa5dbd6ed5\"\u003e\u003ccode\u003e352dbef\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.118.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/96e7d6eaa47e3ce421477188735a800b2dffa580\"\u003e\u003ccode\u003e96e7d6e\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3611c3fc5b827ad8e131726152865e71afe2b981\"\u003e\u003ccode\u003e3611c3f\u003c/code\u003e\u003c/a\u003e ⬆️ Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14165\"\u003e#14165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/942fce394bd66b841b9399cff815bb8a18cfd4c6\"\u003e\u003ccode\u003e942fce3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.118.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/13b067c9b677dc7c2aa692b5576768ee0253c4eb\"\u003e\u003ccode\u003e13b067c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/185cecd891ee9591fd0f3beb65b412339d152bf4\"\u003e\u003ccode\u003e185cecd\u003c/code\u003e\u003c/a\u003e 🐛 Fix tagged discriminated union not recognized as body field (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/12942\"\u003e#12942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.111.1...0.119.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `locust` from 2.25.0 to 2.41.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/locustio/locust/releases\"\u003elocust's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.41.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and test it by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3235\"\u003elocustio/locust#3235\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.5...2.41.6\"\u003ehttps://github.com/locustio/locust/compare/2.41.5...2.41.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse www host instead of bare locust.cloud in examples and tests by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3234\"\u003elocustio/locust#3234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix FastHttpUser handling of 308 response code \u003ca href=\"https://github.com/locustio/locust/commit/70184dfbf8d93ed211ec6371cb1f18bddc3a8d5c\"\u003ehttps://github.com/locustio/locust/commit/70184dfbf8d93ed211ec6371cb1f18bddc3a8d5c\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Unsafe Template Arg by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3232\"\u003elocustio/locust#3232\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.3...2.41.5\"\u003ehttps://github.com/locustio/locust/compare/2.41.3...2.41.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnhance MilvusUser constructor to support additional collection parameters by \u003ca href=\"https://github.com/zhuwenxing\"\u003e\u003ccode\u003e@​zhuwenxing\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3229\"\u003elocustio/locust#3229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake workers correctly ignore the --run-time flag by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3230\"\u003elocustio/locust#3230\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.2...2.41.3\"\u003ehttps://github.com/locustio/locust/compare/2.41.2...2.41.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Alignment of View Column Selector by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3226\"\u003elocustio/locust#3226\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePytest plugin: Workaround issue with potential duplicate --host argument definition by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3228\"\u003elocustio/locust#3228\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.1...2.41.2\"\u003ehttps://github.com/locustio/locust/compare/2.41.1...2.41.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.1\u003c/h2\u003e\n\u003cp\u003eFix incorrect url for feedback form\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.41.0...2.41.1\"\u003ehttps://github.com/locustio/locust/compare/2.41.0...2.41.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.41.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSuggest possibly misspelled command line arguments (Did you mean ...) by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3224\"\u003elocustio/locust#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Locust Feedback Form by \u003ca href=\"https://github.com/andrewbaldwin44\"\u003e\u003ccode\u003e@​andrewbaldwin44\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3223\"\u003elocustio/locust#3223\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd MqttUser by \u003ca href=\"https://github.com/ionutab\"\u003e\u003ccode\u003e@​ionutab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3216\"\u003elocustio/locust#3216\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/locustio/locust/compare/2.40.5...2.41.0\"\u003ehttps://github.com/locustio/locust/compare/2.40.5...2.41.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.40.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid wrapping fast response in response context manager when not needed by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3222\"\u003elocustio/locust#3222\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/locustio/locust/blob/master/CHANGELOG.md\"\u003elocust's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.6\"\u003e2.41.6\u003c/a\u003e (2025-10-10)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.5...2.41.6\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficially support Python 3.14 and test it \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3235\"\u003e#3235\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.5\"\u003e2.41.5\u003c/a\u003e (2025-10-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.4...2.41.5\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse www host instead of bare locust.cloud in examples and tests \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3234\"\u003e#3234\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.4\"\u003e2.41.4\u003c/a\u003e (2025-10-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.3...2.41.4\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Unsafe Template Arg \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3232\"\u003e#3232\u003c/a\u003e (\u003ca href=\"https://github.com/andrewbaldwin44\"\u003eandrewbaldwin44\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.3\"\u003e2.41.3\u003c/a\u003e (2025-10-01)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.2...2.41.3\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake workers correctly ignore the --run-time flag \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3230\"\u003e#3230\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnhance MilvusUser constructor to support additional collection parameters \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3229\"\u003e#3229\u003c/a\u003e (\u003ca href=\"https://github.com/zhuwenxing\"\u003ezhuwenxing\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.2\"\u003e2.41.2\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.1...2.41.2\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFixed bugs:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLocust pytest plugin option '--host' conflicts with common user options; suggest renaming to '--locust-host' \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3227\"\u003e#3227\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMerged pull requests:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePytest plugin: Workaround issue with potential duplicate --host argument definition \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3228\"\u003e#3228\u003c/a\u003e (\u003ca href=\"https://github.com/cyberw\"\u003ecyberw\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Alignment of View Column Selector \u003ca href=\"https://redirect.github.com/locustio/locust/pull/3226\"\u003e#3226\u003c/a\u003e (\u003ca href=\"https://github.com/andrewbaldwin44\"\u003eandrewbaldwin44\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/locustio/locust/tree/2.41.1\"\u003e2.41.1\u003c/a\u003e (2025-09-25)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/locustio/locust/compare/2.41.0...2.41.1\"\u003eFull Changelog\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/locustio/locust/commit/9b569474c17a21fd9b80ef5b2280c489fadc2e1a\"\u003e\u003ccode\u003e9b56947\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3235\"\u003e#3235\u003c/a\u003e from locustio/officially-support-python-3.14-and-tes...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/d48665a768fec265517ec815862b4f6fd258cd33\"\u003e\u003ccode\u003ed48665a\u003c/code\u003e\u003c/a\u003e Explicitly mention Python 3.14 support in package \u0026amp; add it to automated testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/894ae53ecf1ae324b60109683c568406adcffa32\"\u003e\u003ccode\u003e894ae53\u003c/code\u003e\u003c/a\u003e Use \u003ca href=\"http://www.locust.cloud\"\u003ewww.locust.cloud\u003c/a\u003e host instead of bare locust.cloud in examples and tests ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/70184dfbf8d93ed211ec6371cb1f18bddc3a8d5c\"\u003e\u003ccode\u003e70184df\u003c/code\u003e\u003c/a\u003e FastHttpUser: Allow http status code 308\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/34b1d9416134d4e83aaa2a49808ff48bf660bce3\"\u003e\u003ccode\u003e34b1d94\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3232\"\u003e#3232\u003c/a\u003e from andrewbaldwin44/bugfix/unsafe-template-arg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/7aea5eb8f8b670cf6d4b19ad5721c85c6afa4331\"\u003e\u003ccode\u003e7aea5eb\u003c/code\u003e\u003c/a\u003e Fix unsafe template arg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/367d6b0880e3cb0b12f020f96eed3e6238ae8d9e\"\u003e\u003ccode\u003e367d6b0\u003c/code\u003e\u003c/a\u003e changelog fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/b1e9132d09c791fec3520ae1bf9d8e5acacb9ea4\"\u003e\u003ccode\u003eb1e9132\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/ea958aa9d69ff64882d87d134e85af5a22ba4290\"\u003e\u003ccode\u003eea958aa\u003c/code\u003e\u003c/a\u003e Bump locust-cloud version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/locustio/locust/commit/b8626e3c827b130d98dd434b6680f2ac8af6e93c\"\u003e\u003ccode\u003eb8626e3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/locustio/locust/issues/3230\"\u003e#3230\u003c/a\u003e from locustio/fix-issue-with---run-time-on-workers\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/locustio/locust/compare/2.25.0...2.41.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mangum` from 0.17.0 to 0.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/mangum/releases\"\u003emangum's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for lifespan state 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/mangum/pull/337\"\u003eKludex/mangum#337\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/mangum/compare/0.18.0...0.19.0\"\u003ehttps://github.com/Kludex/mangum/compare/0.18.0...0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0\u003c/h2\u003e\n\u003cp\u003eMangum officially supports Python 3.13! 🎉\u003c/p\u003e\n\u003cp\u003eNothing changes from 0.18.0a1.\u003c/p\u003e\n\u003ch2\u003e0.18.0a1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix a broken link to asgi-frameworks limitations by \u003ca href=\"https://github.com/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate project 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/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edoc: remove expired domain from README by \u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proper publish workflow 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/mangum/pull/328\"\u003eKludex/mangum#328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove codecov 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/mangum/pull/329\"\u003eKludex/mangum#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePublish documentation on tag push 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/mangum/pull/330\"\u003eKludex/mangum#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate documentation 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/mangum/pull/331\"\u003eKludex/mangum#331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 0.18.0a1 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/mangum/pull/332\"\u003eKludex/mangum#332\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/minamijoyo\"\u003e\u003ccode\u003e@​minamijoyo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/305\"\u003eKludex/mangum#305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/326\"\u003eKludex/mangum#326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewthetechie\"\u003e\u003ccode\u003e@​andrewthetechie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/mangum/pull/325\"\u003eKludex/mangum#325\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/mangum/compare/0.17.0...0.18.0a1\"\u003ehttps://github.com/Kludex/mangum/compare/0.17.0...0.18.0a1\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/mangum/blob/main/CHANGELOG.md\"\u003emangum's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.19.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://asgi.readthedocs.io/en/latest/specs/lifespan.html#lifespan-state\"\u003eLifespan State\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.18.0\u003c/h1\u003e\n\u003cp\u003eNo changes were made compared to 0.18.0a1.\u003c/p\u003e\n\u003ch1\u003e0.18.0a1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.13 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/mangum/pull/327\"\u003eKludex/mangum#327\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/mangum/commit/4152a4eb8d325e382f41e4b04628671565f12a2d\"\u003e\u003ccode\u003e4152a4e\u003c/code\u003e\u003c/a\u003e Version 0.19.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/631b930e72a43d7872ca177b84fa3cfca8714a99\"\u003e\u003ccode\u003e631b930\u003c/code\u003e\u003c/a\u003e Add support for lifespan state (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/5a7121d56b2a7868e3331a1c4bc278711693a142\"\u003e\u003ccode\u003e5a7121d\u003c/code\u003e\u003c/a\u003e Update linting and type checker setup (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b7e18ede3eadb38cc5d536d4c46a0a5ffa160270\"\u003e\u003ccode\u003eb7e18ed\u003c/code\u003e\u003c/a\u003e Remove FUNDING.yml (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/c8246c556e068590d91b98d6516e7f87a5703640\"\u003e\u003ccode\u003ec8246c5\u003c/code\u003e\u003c/a\u003e Create CNAME (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/b749f9530e12ee90461628eaeadbc644fa89dd3e\"\u003e\u003ccode\u003eb749f95\u003c/code\u003e\u003c/a\u003e Version 0.18.0 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/a32d59dd253305f5d2d75551223c1984b6f22910\"\u003e\u003ccode\u003ea32d59d\u003c/code\u003e\u003c/a\u003e Version 0.18.0a1 (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/4a95083438a100224896a98e7392395e96bfbfce\"\u003e\u003ccode\u003e4a95083\u003c/code\u003e\u003c/a\u003e Update documentation (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/93baf9c0054f8623885fb658bc8299b8126c8e42\"\u003e\u003ccode\u003e93baf9c\u003c/code\u003e\u003c/a\u003e Publish documentation on tag push (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/330\"\u003e#330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/mangum/commit/d8455d1434dc50cf3b57078288345609c8e5d7fc\"\u003e\u003ccode\u003ed8455d1\u003c/code\u003e\u003c/a\u003e Remove codecov (\u003ca href=\"https://redirect.github.com/Kludex/mangum/issues/329\"\u003e#329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/mangum/compare/0.17.0...0.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 3.5.0 to 4.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.3.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.2.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for the default language version before consulting a potentially unversioned \u003ccode\u003esys.executable\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3430\"\u003e#3430\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle error during conflict detection when a file is named \u0026quot;HEAD\u0026quot;\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3425\"\u003e#3425\u003c/a\u003e PR by \u003ca href=\"https://github.com/tusharsadhwani\"\u003e\u003ccode\u003e@​tusharsadhwani\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.1.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3348\"\u003e#3348\u003c/a\u003e PR by \u003ca href=\"https://github.com/fredrikekre\"\u003e\u003ccode\u003e@​fredrikekre\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2689\"\u003e#2689\u003c/a\u003e issue \u003ca href=\"https://github.com/jmuchovej\"\u003e\u003ccode\u003e@​jmuchovej\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable automatic toolchain switching for \u003ccode\u003elanguage: golang\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3304\"\u003e#3304\u003c/a\u003e PR by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3300\"\u003e#3300\u003c/a\u003e issue by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3149\"\u003e#3149\u003c/a\u003e issue by \u003ca href=\"https://github.com/nijel\"\u003e\u003ccode\u003e@​nijel\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: r\u003c/code\u003e installation when initiated by RStudio.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3389\"\u003e#3389\u003c/a\u003e PR by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3385\"\u003e#3385\u003c/a\u003e issue by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.0.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003epre-commit migrate-config\u003c/code\u003e for unquoted deprecated stages names with\npurelib \u003ccode\u003epyyaml\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3324\"\u003e#3324\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit-ci/issues/issues/234\"\u003epre-commit-ci/issues#234\u003c/a\u003e issue by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epre-commit v4.0.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove \u003ccode\u003epre-commit migrate-config\u003c/code\u003e to handle more yaml formats.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3301\"\u003e#3301\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003estages\u003c/code\u003e deprecation in \u003ccode\u003epre-commit migrate-config\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3302\"\u003e#3302\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2732\"\u003e#2732\u003c/a\u003e issue by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eruby-build\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.3.0 - 2025-08-09\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elanguage: docker\u003c/code\u003e / \u003ccode\u003elanguage: docker_image\u003c/code\u003e: detect rootless docker.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3446\"\u003e#3446\u003c/a\u003e PR by \u003ca href=\"https://github.com/matthewhughes934\"\u003e\u003ccode\u003e@​matthewhughes934\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/1243\"\u003e#1243\u003c/a\u003e issue by \u003ca href=\"https://github.com/dkolepp\"\u003e\u003ccode\u003e@​dkolepp\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: julia\u003c/code\u003e: avoid \u003ccode\u003estartup.jl\u003c/code\u003e when executing hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e PR by \u003ca href=\"https://github.com/ericphanson\"\u003e\u003ccode\u003e@​ericphanson\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage: dart\u003c/code\u003e: support latest dart versions which require a higher sdk\nlower bound.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e PR by \u003ca href=\"https://github.com/bc-lee\"\u003e\u003ccode\u003e@​bc-lee\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.2.0 - 2025-03-18\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFor \u003ccode\u003elanguage: python\u003c/code\u003e first attempt a versioned python executable for\nthe default language version before consulting a potentially unversioned\n\u003ccode\u003esys.executable\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3430\"\u003e#3430\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle error during conflict detection when a file is named \u0026quot;HEAD\u0026quot;\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3425\"\u003e#3425\u003c/a\u003e PR by \u003ca href=\"https://github.com/tusharsadhwani\"\u003e\u003ccode\u003e@​tusharsadhwani\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.1.0 - 2025-01-20\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3348\"\u003e#3348\u003c/a\u003e PR by \u003ca href=\"https://github.com/fredrikekre\"\u003e\u003ccode\u003e@​fredrikekre\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/2689\"\u003e#2689\u003c/a\u003e issue \u003ca href=\"https://github.com/jmuchovej\"\u003e\u003ccode\u003e@​jmuchovej\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable automatic toolchain switching for \u003ccode\u003elanguage: golang\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3304\"\u003e#3304\u003c/a\u003e PR by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3300\"\u003e#3300\u003c/a\u003e issue by \u003ca href=\"https://github.com/AleksaC\"\u003e\u003ccode\u003e@​AleksaC\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3149\"\u003e#3149\u003c/a\u003e issue by \u003ca href=\"https://github.com/nijel\"\u003e\u003ccode\u003e@​nijel\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: r\u003c/code\u003e installation when initiated by RStudio.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3389\"\u003e#3389\u003c/a\u003e PR by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3385\"\u003e#3385\u003c/a\u003e issue by \u003ca href=\"https://github.com/lorenzwalthert\"\u003e\u003ccode\u003e@​lorenzwalthert\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.0.1 - 2024-10-08\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003epre-commit migrate-config\u003c/code\u003e for unquoted deprecated stages names with\npurelib \u003ccode\u003epyyaml\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/pre-commit/pre-commit/commit/b74a22d96cca546b8e0bb9f68f1d7d8565205b65\"\u003e\u003ccode\u003eb74a22d\u003c/code\u003e\u003c/a\u003e v4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/cc899de192a5f5614633d86178568cc1c46d999d\"\u003e\u003ccode\u003ecc899de\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3507\"\u003e#3507\u003c/a\u003e from bc-lee/dart-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a0bcea7570620416a550362d9b2d2b24eb80dd8\"\u003e\u003ccode\u003e2a0bcea\u003c/code\u003e\u003c/a\u003e Downgrade Dart SDK version installed in the CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f1cc7a445f1adbfc9ea4072e180fbe3054af669b\"\u003e\u003ccode\u003ef1cc7a4\u003c/code\u003e\u003c/a\u003e Make Dart pre-commit hook compatible with the latest Dart SDKs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/72a3b71f0e7b89b78899739aeee2e962914ab649\"\u003e\u003ccode\u003e72a3b71\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3504\"\u003e#3504\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c8925a457afb1d6850c8f105671846bae408aae0\"\u003e\u003ccode\u003ec8925a4\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5fe6c500c2c7a17aaa21f0bb91ee7ceecf61968\"\u003e\u003ccode\u003ea5fe6c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3496\"\u003e#3496\u003c/a\u003e from ericphanson/eph/jl-startup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/6f1f433a9cea94a70828ade95931a703c9a9c82b\"\u003e\u003ccode\u003e6f1f433\u003c/code\u003e\u003c/a\u003e Julia language: skip startup.jl file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/c6817210b1cdbbfbd1b1ff2148edfa15bf4b3c97\"\u003e\u003ccode\u003ec681721\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3499\"\u003e#3499\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/4fd4537bc69e6804998d99e4851a9dbe43e91757\"\u003e\u003ccode\u003e4fd4537\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v3.5.0...v4.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.9 to 2.12.1\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.1 2025-10-13\u003c/h2\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers 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/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in 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/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using 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/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures 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/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value 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-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag 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/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues 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/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\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.0...v2.12.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.0...v2.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.0 2025-10-07\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch1\u003ev2.12.0 (2025-10-07)\u003c/h1\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nCheck out the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release\"\u003eblog post\u003c/a\u003e for release highlights. Several minor \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003echanges\u003c/a\u003e (considered non-breaking changes according to our \u003ca href=\"https://docs.pydantic.dev/2.12/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\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nThe core functionality of Pydantic V1 is \u003cstrong\u003enot\u003c/strong\u003e compatible with \u003cstrong\u003ePython 3.14\u003c/strong\u003e or greater.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support.\u003c/p\u003e\n\u003cp\u003eChangelog (see the \u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.0a1\"\u003e2.12.0a1\u003c/a\u003e and \u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.0b1\"\u003e2.12.0b1\u003c/a\u003e releases for additional changes since 2.11):\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate V1 copy to v1.10.24 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/12338\"\u003e#12338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eNew Features\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/pydantic/pydantic/blob/v2.12.1/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers 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/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in 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/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using 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/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures 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/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value 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-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag 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/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues 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/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.0 (2025-10-07)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://docs.pydantic.dev/2.12/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\u003e\u003cstrong\u003eNote that Pydantic V1 is not compatible with Python 3.14 and greater\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eChanges (see the alpha and beta releases for additional changes since 2.11):\u003c/p\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate V1 copy to v1.10.24 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/12338\"\u003e#12338\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eextra\u003c/code\u003e parameter to the validate functions by \u003ca href=\"https://github.com/anvilpete\"\u003e\u003ccode\u003e@​anvilpete\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12233\"\u003e#12233\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_computed_fields\u003c/code\u003e serialization option 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/12334\"\u003e#12334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epreverse_empty_path\u003c/code\u003e URL options 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/12336\"\u003e#12336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eunion_format\u003c/code\u003e parameter to JSON Schema generation 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/12147\"\u003e#12147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__qualname__\u003c/code\u003e parameter for \u003ccode\u003ecreate_model\u003c/code\u003e by \u003ca href=\"https://github.com/Atry\"\u003e\u003ccode\u003e@​Atry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12001\"\u003e#12001\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\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/b4076c66773b514d4891f036a4cc562b8ff0ff21\"\u003e\u003ccode\u003eb4076c6\u003c/code\u003e\u003c/a\u003e Prepare release 2.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b67f07291167b4005a6eeee05fcad67b43a53f41\"\u003e\u003ccode\u003eb67f072\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/529f7ddc4a2eac8eb41b39d8b4d6c07997de46f8\"\u003e\u003ccode\u003e529f7dd\u003c/code\u003e\u003c/a\u003e Fix error message for invalid validator signatures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/445fa79f2eda31e2a1922f9736f7613bbd9680b5\"\u003e\u003ccode\u003e445fa79\u003c/code\u003e\u003c/a\u003e Backport V1 runtime warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b3dba9be0705293019c368d8acc5b8b60dcf5148\"\u003e\u003ccode\u003eb3dba9b\u003c/code\u003e\u003c/a\u003e Make sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1e8c41ee1327c153c713f47feb98a5fa7bb8ce89\"\u003e\u003ccode\u003e1e8c41e\u003c/code\u003e\u003c/a\u003e Do not evaluate annotations when inspecting validators and serializers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2a199fe4fc5f8cbc32c93840c9783b332b4f112\"\u003e\u003ccode\u003ee2a199f\u003c/code\u003e\u003c/a\u003e Upgrade dependencies for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/79353e6a6b9fc7a34304d5981b670832044caa99\"\u003e\u003ccode\u003e79353e6\u003c/code\u003e\u003c/a\u003e Fix spelling in \u003ccode\u003emodel_dump()\u003c/code\u003e docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/aa6b6cd206253c24a46a5fb830e2ff029d21fb95\"\u003e\u003ccode\u003eaa6b6cd\u003c/code\u003e\u003c/a\u003e Fix typo in experimental.md documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a7928e692e5a7841c4379d1af1fd37966941dade\"\u003e\u003ccode\u003ea7928e6\u003c/code\u003e\u003c/a\u003e Update Python version in documentation publishing CI job (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12344\"\u003e#12344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.9...v2.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-xdist` from 3.6.1 to 3.8.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst\"\u003epytest-xdist's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epytest-xdist 3.8.0 (2025-06-30)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1083](https://github.com/pytest-dev/pytest-xdist/issues/1083) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1083\u0026gt;\u003c/code\u003e_: Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e option to control whether to automatically reorder tests in loadscope for tests where relative ordering matters. This only applies when using \u003ccode\u003eloadscope\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor example, [test_file_1, test_file_2, ..., test_file_n] are given as input test files, if \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e is used, for either worker, the \u003ccode\u003etest_file_a\u003c/code\u003e will be executed before \u003ccode\u003etest_file_b\u003c/code\u003e only if \u003ccode\u003ea \u0026lt; b\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default behavior is to reorder the tests to maximize the number of tests that can be executed in parallel.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003epytest-xdist 3.7.0 (2025-05-26)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1142](https://github.com/pytest-dev/pytest-xdist/issues/1142) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1142\u0026gt;\u003c/code\u003e_: Added support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1144](https://github.com/pytest-dev/pytest-xdist/issues/1144) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1144\u0026gt;\u003c/code\u003e_: The internal \u003ccode\u003esteal\u003c/code\u003e command is now atomic - it unschedules either all requested tests or none.\u003c/p\u003e\n\u003cp\u003eThis is a prerequisite for group/scope support in the \u003ccode\u003eworksteal\u003c/code\u003e scheduler, so test groups won't be broken up incorrectly.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1170](https://github.com/pytest-dev/pytest-xdist/issues/1170) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1170\u0026gt;\u003c/code\u003e_: Add the \u003ccode\u003e--px\u003c/code\u003e arg to create proxy gateways.\u003c/p\u003e\n\u003cp\u003eProxy gateways are passed to additional gateways using the \u003ccode\u003evia\u003c/code\u003e keyword.\nThey can serve as a way to run multiple workers on remote machines.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1200](https://github.com/pytest-dev/pytest-xdist/issues/1200) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1200\u0026gt;\u003c/code\u003e_: Now multiple \u003ccode\u003exdist_group\u003c/code\u003e markers are considered when assigning tests to groups (order does not matter).\u003c/p\u003e\n\u003cp\u003ePreviously, only the last marker would assign a test to a group, but now if a test has multiple \u003ccode\u003exdist_group\u003c/code\u003e marks applied (for example via parametrization or via fixtures), they are merged to make a new group.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#1162](https://github.com/pytest-dev/pytest-xdist/issues/1162) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1162\u0026gt;\u003c/code\u003e_: Dropped support for EOL Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTrivial Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1092](https://github.com/pytest-dev/pytest-xdist/issues/1092) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1092\u0026gt;\u003c/code\u003e_: Update an error message to better indicate where users should go for more information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#1190](https://github.com/pytest-dev/pytest-xdist/issues/1190) \u0026lt;https://github.com/pytest-dev/pytest-xdist/issues/1190\u0026gt;\u003c/code\u003e_: Switched to using a SPDX license identifier introduced in PEP 639.\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-xdist/commit/1e3e4dc16523c8a8f6c67d95a950166420718c99\"\u003e\u003ccode\u003e1e3e4dc\u003c/code\u003e\u003c/a\u003e Release 3.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/600aad575a4e4382855145b0c464d51b8f0b7242\"\u003e\u003ccode\u003e600aad5\u003c/code\u003e\u003c/a\u003e Ensure all xdist group names are strings (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1216\"\u003e#1216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/9d7ba5b5fbbbe26793fbfb7cb1903eb69425cf09\"\u003e\u003ccode\u003e9d7ba5b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e--no-loadscope-reorder\u003c/code\u003e and \u003ccode\u003e--loadscope-reorder\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/532f07fb181bb1546eda79bbe6b46bdb56c699e1\"\u003e\u003ccode\u003e532f07f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1210\"\u003e#1210\u003c/a\u003e from pytest-dev/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/0883ad085e0cf039c8ae13eb2789c1076544d225\"\u003e\u003ccode\u003e0883ad0\u003c/code\u003e\u003c/a\u003e Fix Path usage in \u003ccode\u003etest_rsync_roots_no_roots\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/58a51bc14015d211761e44c2bdacab09c3893668\"\u003e\u003ccode\u003e58a51bc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/59a2ad0150697b9ff837f3ae8dcf6e074d5a114b\"\u003e\u003ccode\u003e59a2ad0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1220\"\u003e#1220\u003c/a\u003e from pytest-dev/dependabot/github_actions/github-act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/d42b9c72044855236c68286ca3bdb34486a05872\"\u003e\u003ccode\u003ed42b9c7\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/ebfcb99072aed3503fda5175245f28895a0204bb\"\u003e\u003ccode\u003eebfcb99\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1206\"\u003e#1206\u003c/a\u003e from pytest-dev/release-3.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-xdist/commit/23b7fd6054298a530b02b33d07007b3082a36277\"\u003e\u003ccode\u003e23b7fd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-xdist/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.8.0\"\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.25 to 1.2.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.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 ...\n\n_Description has been truncated_","html_url":"https://github.com/awslabs/LISA/pull/504","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2FLISA/issues/504","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/504/packages"}},{"old_version":"2.8.0","new_version":"3.0.0","update_type":"major","path":null,"pr_created_at":"2025-10-06T21:04:45.000Z","version_change":"2.8.0 → 3.0.0","issue":{"uuid":"3489096185","node_id":"PR_kwDOHUSeqs6sXqmE","number":435,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-06T21:04:45.000Z","updated_at":"2025-10-06T23:17:40.770Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":19,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.24","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.1","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"numpy","old_version":"2.2.4","new_version":"2.3.3","repository_url":"https://github.com/numpy/numpy"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.24` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.1` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.3` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.3.3` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\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/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.24\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\u003ev1.10.24 2025-09-25\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.23...v1.10.24\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.24/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.24 (2025-09-25)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd user warning when using 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/pydantic/pydantic/pull/12263\"\u003epydantic/pydantic#12263\u003c/a\u003e\nPydantic V1 will \u003cem\u003enot\u003c/em\u003e work with Python 3.14 and greater. A warning is now raised as no actual\nerror show up when using it, but the core behavior will silently get broken at runtime.\u003c/li\u003e\n\u003cli\u003eFix mypy plugin issue for mypy v1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12254\"\u003epydantic/pydantic#12254\u003c/a\u003e\nThis fixes another mypy issue that was discovered after the previous v1.10.23 release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ebb3e81419f8a1c0b4976b91a22bfb17a3ddf23c\"\u003e\u003ccode\u003eebb3e81\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.24 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12255\"\u003e#12255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e903f17dbd952216943d7c574deae23da2caf96f\"\u003e\u003ccode\u003ee903f17\u003c/code\u003e\u003c/a\u003e Add user warning when using Python 3.14 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12263\"\u003e#12263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c1705d46972d397b5f81f98f1f3577f6d661589\"\u003e\u003ccode\u003e2c1705d\u003c/code\u003e\u003c/a\u003e Fix mypy plugin issue for mypy v1.18 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12254\"\u003e#12254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.1\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.1] - 2025-10-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/ecb00fe74a09c93d49bef0cbd86f600f066494e9\"\u003e\u003ccode\u003eecb00fe\u003c/code\u003e\u003c/a\u003e update uv lockfile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/4e96a4369dcf89a895af95898ea92cc4bcacfe78\"\u003e\u003ccode\u003e4e96a43\u003c/code\u003e\u003c/a\u003e version changes for v6.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a0de8c9bdfcf7a2c2462087a585b7e762ca21c51\"\u003e\u003ccode\u003ea0de8c9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5361\"\u003e#5361\u003c/a\u003e from plotly/matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/832b46c77da10c203348a953f04e4c047ec083ef\"\u003e\u003ccode\u003e832b46c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into matplotlib-import-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/b258862b0f41ac12e087a65b4370c1675b956dc6\"\u003e\u003ccode\u003eb258862\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5180\"\u003e#5180\u003c/a\u003e from gmjw/secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/2c5e2b61873a8cf92ed8473b98801ab099878dda\"\u003e\u003ccode\u003e2c5e2b6\u003c/code\u003e\u003c/a\u003e fix matplotlib import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/610b7ee6bebf47d6f902f0393f2ca75557a7683e\"\u003e\u003ccode\u003e610b7ee\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into secondary-y-shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/fbbc9d68f9987afaeb7abce9f550b6f0ed660513\"\u003e\u003ccode\u003efbbc9d6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5322\"\u003e#5322\u003c/a\u003e from mgorny/plt-import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/d2af541c362c16a4ca6525322149940e88b03ccd\"\u003e\u003ccode\u003ed2af541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5258\"\u003e#5258\u003c/a\u003e from plotly/fix-default-renderer-when-ipython-installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/ead0c767797879fb978743377b67541be98ea8f1\"\u003e\u003ccode\u003eead0c76\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into plt-import\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 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.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"ht...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/435","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/435","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/435/packages"}},{"old_version":"2.8.0","new_version":"3.0.0","update_type":"major","path":"/backend","pr_created_at":"2025-09-24T14:04:26.000Z","version_change":"2.8.0 → 3.0.0","issue":{"uuid":"2857107225","node_id":"PR_kwDOP2Ew5c6qS_8Z","number":9,"state":"open","title":"build(deps): bump opensearch-py from 2.8.0 to 3.0.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-24T14:04:26.000Z","updated_at":"2025-09-24T14:04:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [opensearch-py](https://github.com/opensearch-project/opensearch-py) from 2.8.0 to 3.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=opensearch-py\u0026package-manager=pip\u0026previous-version=2.8.0\u0026new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/jsol444455/Mod_OpenWebUI/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsol444455%2FMod_OpenWebUI/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"}},{"old_version":"2.8.0","new_version":"3.0.0","update_type":"major","path":null,"pr_created_at":"2025-09-22T21:06:13.000Z","version_change":"2.8.0 → 3.0.0","issue":{"uuid":"3442773217","node_id":"PR_kwDOHUSeqs6p8Ooe","number":434,"state":"open","title":"NO-ISSUE: Bump the python-dependencies group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["approved","lgtm","jira/valid-reference","dependabot","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-09-22T21:06:13.000Z","updated_at":"2025-09-22T22:23:45.823Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"NO-ISSUE: Bump","group_name":"python-dependencies","update_count":17,"packages":[{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"google-cloud-storage","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/googleapis/python-storage"},{"name":"junitparser","old_version":"3.2.0","new_version":"4.0.2","repository_url":"https://github.com/weiwei/junitparser"},{"name":"pydantic","old_version":"1.10.22","new_version":"1.10.23","repository_url":"https://github.com/pydantic/pydantic"},{"name":"opensearch-py","old_version":"2.8.0","new_version":"3.0.0","repository_url":"https://github.com/opensearch-project/opensearch-py"},{"name":"slack-sdk","old_version":"3.35.0","new_version":"3.36.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"plotly","old_version":"6.1.2","new_version":"6.3.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"kaleido","old_version":"0.2.1","new_version":"1.1.0","repository_url":"https://github.com/plotly/kaleido"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.2","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"mmh3","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"tox","old_version":"4.26.0","new_version":"4.30.2","repository_url":"https://github.com/tox-dev/tox"},{"name":"freezegun","old_version":"1.5.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"pytest","old_version":"8.4.0","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"coverage","old_version":"7.8.2","new_version":"7.10.7"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"mypy","old_version":"1.16.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [google-cloud-storage](https://github.com/googleapis/python-storage) | `3.1.0` | `3.4.0` |\n| [junitparser](https://github.com/weiwei/junitparser) | `3.2.0` | `4.0.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `1.10.22` | `1.10.23` |\n| [opensearch-py](https://github.com/opensearch-project/opensearch-py) | `2.8.0` | `3.0.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.35.0` | `3.36.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.3.0` |\n| [kaleido](https://github.com/plotly/kaleido) | `0.2.1` | `1.1.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.2` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.1.0` | `5.2.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.26.0` | `4.30.2` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.2` | `1.5.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [coverage[toml]](https://github.com/nedbat/coveragepy) | `7.8.2` | `7.10.7` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.16.0` | `1.18.2` |\n\n\nUpdates `requests` from 2.32.4 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.4...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.1.0 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-storage/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same.(\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.1.1\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/googleapis/python-storage/blob/main/CHANGELOG.md\"\u003egoogle-cloud-storage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.1...v3.4.0\"\u003e3.4.0\u003c/a\u003e (2025-09-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003eac57b8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperimental:\u003c/strong\u003e Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e5674587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003ec80d820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.3.0...v3.3.1\"\u003e3.3.1\u003c/a\u003e (2025-08-25)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eProvide option to user to set entire object checksum at \u0026quot;initiate a resumable upload session\u0026quot; and send the same (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1525\"\u003e#1525\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a8109e0d02c62542f1bea20373b53864fb776caa\"\u003ea8109e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSend part's checksum for XML MPU part upload (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1529\"\u003e#1529\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/2ad77c7d949e84c515c051a0fd4b37b822788dd8\"\u003e2ad77c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.2.0...v3.3.0\"\u003e3.3.0\u003c/a\u003e (2025-08-05)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for bucket IP filter (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/a29073cf58df9c5667305e05c6378284057cda23\"\u003ea29073c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logs on AssertionError for issue \u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1512\"\u003e#1512\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1518\"\u003e#1518\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/6a9923e4fc944f7a7c3906eb7800d23677bd2481\"\u003e6a9923e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the documentation of move_blob function (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1507\"\u003e#1507\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/72252e940909ce2e3da9cfd80f5b7b43a026f45c\"\u003e72252e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.1...v3.2.0\"\u003e3.2.0\u003c/a\u003e (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support of single shot download (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1493\"\u003e#1493\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-storage/commit/61c5d5f62c88506f200bc6d86b399a2c28715bc4\"\u003e61c5d5f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.1.1\"\u003e3.1.1\u003c/a\u003e (2025-06-13)\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/googleapis/python-storage/commit/fd8e9119d81ea6b53e9af591d5d464c91b263c51\"\u003e\u003ccode\u003efd8e911\u003c/code\u003e\u003c/a\u003e chore(main): release 3.4.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/ac57b8d819a49aef0ed0cb5bb630bf11012f43e3\"\u003e\u003ccode\u003eac57b8d\u003c/code\u003e\u003c/a\u003e feat(experimental): add async grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1537\"\u003e#1537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/5674587f2aa347ec2787f2bc1e847eaa294bc1ca\"\u003e\u003ccode\u003e5674587\u003c/code\u003e\u003c/a\u003e feat(experimental): Add grpc client (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1533\"\u003e#1533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/dc3756d00c75438a8e7097b2f9160dc47ca73e03\"\u003e\u003ccode\u003edc3756d\u003c/code\u003e\u003c/a\u003e chore: Update gapic-generator-python to 1.26.2 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1540\"\u003e#1540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/c80d8207a8661b84c56cd66bb34de7b5704675b8\"\u003e\u003ccode\u003ec80d820\u003c/code\u003e\u003c/a\u003e fix: GAPIC generation failed with 'Directory not empty' (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/b4ce8dad8fc08be8d4c67fa3dc33c7867d7df822\"\u003e\u003ccode\u003eb4ce8da\u003c/code\u003e\u003c/a\u003e chore: add argparse to run samples as script (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1538\"\u003e#1538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/87f71961d6a498e8bf74c4f995b4c0f98190892d\"\u003e\u003ccode\u003e87f7196\u003c/code\u003e\u003c/a\u003e chore: update Python generator version to 1.25.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1535\"\u003e#1535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/67326df83ced2678987f98f1daa926c6849ab925\"\u003e\u003ccode\u003e67326df\u003c/code\u003e\u003c/a\u003e chore: fix the gapic unit tests (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1536\"\u003e#1536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/067e6b08f0d4022f2471656cee3375a09e006776\"\u003e\u003ccode\u003e067e6b0\u003c/code\u003e\u003c/a\u003e chore(main): release 3.3.1 (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-storage/commit/04b01ed07d3541a74fbe7de1f4bff95ed62cd311\"\u003e\u003ccode\u003e04b01ed\u003c/code\u003e\u003c/a\u003e chore: make the gapic code private (\u003ca href=\"https://redirect.github.com/googleapis/python-storage/issues/1519\"\u003e#1519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-storage/compare/v3.1.0...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `junitparser` from 3.2.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/weiwei/junitparser/blob/master/CHANGELOG.md\"\u003ejunitparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.0.2] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - now supports \u003ccode\u003ePath\u003c/code\u003e from \u003ccode\u003epathlib\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.1] - 2025-06-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ewrite_xml\u003c/code\u003e - Remove encoding kwarg to fix \u003ccode\u003ebinary mode doesn't take an encoding argument\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0] - 2025-06-22\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e\nto \u003ccode\u003efile_or_filename\u003c/code\u003e, as these methods now support file objects and file-like objects.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTurned positional argument \u003ccode\u003epretty\u003c/code\u003e of methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e into keyword argument.\nUse as \u003ccode\u003ewrite_xml(obj, filename, pretty=True)\u003c/code\u003e and \u003ccode\u003eobj.write(filename, pretty=True)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved argument \u003ccode\u003eto_console\u003c/code\u003e from methods \u003ccode\u003ewrite_xml\u003c/code\u003e, \u003ccode\u003eTestSuite.write\u003c/code\u003e, and \u003ccode\u003eJUnitXml.write\u003c/code\u003e.\nInstead, use \u003ccode\u003ewrite_xml(obj, sys.stdout)\u003c/code\u003e and \u003ccode\u003eobj.write(sys.stdout)\u003c/code\u003e, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed argument \u003ccode\u003efilepath\u003c/code\u003e of method \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e to \u003ccode\u003efile\u003c/code\u003e,\nto reflect that this method supports file objects, file-like objects, and urls.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSetter method \u003ccode\u003eTestCase.result\u003c/code\u003e used to ignore values of invalid types. This method now throws a \u003ccode\u003eValueError\u003c/code\u003e instead.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethod \u003ccode\u003exunit2.TestCase.add_rerun_result\u003c/code\u003e has been renamed to \u003ccode\u003eadd_interim_result\u003c/code\u003e result to better reflect class hierarchy\nof interim (rerun and flaky) results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMethods \u003ccode\u003eJUnitXml.fromfile\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromstring\u003c/code\u003e, \u003ccode\u003eJUnitXml.fromroot\u003c/code\u003e always return a \u003ccode\u003eJUnitXml\u003c/code\u003e instance.\nEarlier versions return a \u003ccode\u003eTestSuite\u003c/code\u003e instance when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e.\nA \u003ccode\u003eJUnitXml\u003c/code\u003e instance has already been returned by earlier versions when the root of the file / string / element is a \u003ccode\u003e\u0026lt;TestSuites\u0026gt;\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you want to create a \u003ccode\u003eTestSuite\u003c/code\u003e instance from a \u003ccode\u003e\u0026lt;TestSuite\u0026gt;\u003c/code\u003e element, use\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTestSuite.fromelem(elem)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-08-31\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eTestCase.result\u003c/code\u003e type annotation\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exunit2.JUnitXml.fromroot\u003c/code\u003e type annotation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.2] - 2024-02-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExcluded \u003ccode\u003eTestCase\u003c/code\u003e and \u003ccode\u003eTestSuite\u003c/code\u003e from pytest discovery. Thanks to \u003ca href=\"https://github.com/kurtsansom\"\u003e\u003ccode\u003e@​kurtsansom\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMore type annotations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.1] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSphinx documentation, thanks to \u003ca href=\"https://github.com/cmarqu\"\u003e\u003ccode\u003e@​cmarqu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etype check by adding \u003ccode\u003epy.typed\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTests converted to \u003ccode\u003epytest\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.1.0] - 2023-04-22\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5bdff46601ec082b9ab0601c68bf5d3af6672577\"\u003e\u003ccode\u003e5bdff46\u003c/code\u003e\u003c/a\u003e implement \u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/169\"\u003e#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/5431c31c04490106b757808f22a057a2918247a8\"\u003e\u003ccode\u003e5431c31\u003c/code\u003e\u003c/a\u003e Fix: Remove encoding from wb open (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/168\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/7e2fe2d622779550abacf7b40872c6f7b73ddbb1\"\u003e\u003ccode\u003e7e2fe2d\u003c/code\u003e\u003c/a\u003e skip a test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/0732f45150d9bb0760c917aed9fb742233c339f6\"\u003e\u003ccode\u003e0732f45\u003c/code\u003e\u003c/a\u003e release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/2e3b7564a8faee437b1933abaa2ffa0185a9d238\"\u003e\u003ccode\u003e2e3b756\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eJUnitXml.from*\u003c/code\u003e methods return only \u003ccode\u003eJUnitXml\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/b72d403bbe716bb091816e9d7d916e19552d6449\"\u003e\u003ccode\u003eb72d403\u003c/code\u003e\u003c/a\u003e Migrate to setuptools build backend (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/156\"\u003e#156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/3e14d22a07e880378e63785f70138901e079df96\"\u003e\u003ccode\u003e3e14d22\u003c/code\u003e\u003c/a\u003e Remove ubuntu 20.04 from CI, losses test coverage for Python 3.6 an 3.7 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/f31c7a7196108a79265e8975a8b8e3f94564409b\"\u003e\u003ccode\u003ef31c7a7\u003c/code\u003e\u003c/a\u003e Enable inheritance (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/a96a51f04014f381b94675663372e98b113dbe0c\"\u003e\u003ccode\u003ea96a51f\u003c/code\u003e\u003c/a\u003e Update sphinx requirement from ~=8.1 to ~=7.4 (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weiwei/junitparser/commit/d069fa55795db9f3ec7a8ea4b3a10be8550db1ee\"\u003e\u003ccode\u003ed069fa5\u003c/code\u003e\u003c/a\u003e Fix CI badge in README.rst (\u003ca href=\"https://redirect.github.com/weiwei/junitparser/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/weiwei/junitparser/compare/3.2.0...4.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 1.10.22 to 1.10.23\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\u003ev1.10.23 2025-09-13\u003c/h2\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\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/v1.10.22...v1.10.23\"\u003ehttps://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v1.10.23/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.10.23 (2025-09-13)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypy plugin for mypy 1.18 by \u003ca href=\"https://github.com/cdce8p\"\u003e\u003ccode\u003e@​cdce8p\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12207\"\u003epydantic/pydantic#12207\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/469510f9f37fe999572409eb11f8fe59a27c9a45\"\u003e\u003ccode\u003e469510f\u003c/code\u003e\u003c/a\u003e Prepare release v1.10.23 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/ff48ee76f238ba05690ec9d2d047973e9e9a1305\"\u003e\u003ccode\u003eff48ee7\u003c/code\u003e\u003c/a\u003e Fix mypy v1 plugin for upcoming mypy release (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12207\"\u003e#12207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/da5bbdc3682c273484ecbe0d3a8adff90fc2ffd1\"\u003e\u003ccode\u003eda5bbdc\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003emypy_extensions\u003c/code\u003e deprecation warning (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12208\"\u003e#12208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v1.10.22...v1.10.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opensearch-py` from 2.8.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/opensearch-project/opensearch-py/releases\"\u003eopensearch-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreparing for next developer iteration, 2.8.1. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/861\"\u003eopensearch-project/opensearch-py#861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emade custom headers be available to async aws signer by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) by \u003ca href=\"https://github.com/nathaliellenaa\"\u003e\u003ccode\u003e@​nathaliellenaa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003eopensearch-project/opensearch-py#859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients by \u003ca href=\"https://github.com/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003eopensearch-project/opensearch-py#866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed double-writes. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed lint error. by \u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/875\"\u003eopensearch-project/opensearch-py#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded new test case for bulk delete by \u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003eopensearch-project/opensearch-py#881\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PIT example in search.md by \u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. by \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/894\"\u003eopensearch-project/opensearch-py#894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare opensearch-py for 3.0.0 release by \u003ca href=\"https://github.com/saimedhi\"\u003e\u003ccode\u003e@​saimedhi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003eopensearch-project/opensearch-py#907\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/brunomurino\"\u003e\u003ccode\u003e@​brunomurino\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003eopensearch-project/opensearch-py#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexLoyko\"\u003e\u003ccode\u003e@​AlexLoyko\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003eopensearch-project/opensearch-py#874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harshil-Jani\"\u003e\u003ccode\u003e@​Harshil-Jani\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/878\"\u003eopensearch-project/opensearch-py#878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mausch\"\u003e\u003ccode\u003e@​mausch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/869\"\u003eopensearch-project/opensearch-py#869\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ehttps://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.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/opensearch-project/opensearch-py/blob/main/CHANGELOG.md\"\u003eopensearch-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.0.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded option to pass custom headers to 'AWSV4SignerAsyncAuth' (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/863\"\u003e863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded sync and async sample that uses \u003ccode\u003esearch_after\u003c/code\u003e parameter (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/859\"\u003e859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforced mandatory keyword-only arguments for calling auto-generated OpenSearch-py APIs (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated APIs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated opensearch-py APIs to reflect \u003ca href=\"https://github.com/opensearch-project/opensearch-api-specification/commit/d4eab1a2e59db2b28e58a83df29bd72fc99c71b4\"\u003eopensearch-api-specification@d4eab1a\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSmall refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/866\"\u003e866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall refactor to fix overwriting the module files when generating apis (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/874\"\u003e874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a \u0026quot;type ignore\u0026quot; lint error\u003c/li\u003e\n\u003cli\u003eAdded support for explicit proxy to RequestsHttpConnection (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/908\"\u003e908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump \u003ccode\u003epytest-asyncio\u003c/code\u003e from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/pull/881\"\u003e#881\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/opensearch-project/opensearch-py/commit/2dc4794f728659a54df28585b02b34c75cb7540d\"\u003e\u003ccode\u003e2dc4794\u003c/code\u003e\u003c/a\u003e Prepare opensearch-py for 3.0.0 release (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/907\"\u003e#907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/1a18e589df2cfc8df81124b17bfa53a34e96c40b\"\u003e\u003ccode\u003e1a18e58\u003c/code\u003e\u003c/a\u003e Updated affiliation for \u003ca href=\"https://github.com/dblock\"\u003e\u003ccode\u003e@​dblock\u003c/code\u003e\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/894\"\u003e#894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6ab1a7f652f37468e9938a8ba8f23b1052dbab0e\"\u003e\u003ccode\u003e6ab1a7f\u003c/code\u003e\u003c/a\u003e Fix PIT example in search.md (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/869\"\u003e#869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7336f51aa02562e19a320b1da4938abd79235a40\"\u003e\u003ccode\u003e7336f51\u003c/code\u003e\u003c/a\u003e Update pytest-asyncio requirement from \u0026lt;=0.24.0 to \u0026lt;=0.25.1 (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4cdf81e74142ddd2f501518b54ecb9591fbd873a\"\u003e\u003ccode\u003e4cdf81e\u003c/code\u003e\u003c/a\u003e Added new test case for bulk delete with single item (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/4091816f84aef89253aa85ce1f6c652e315a3dcb\"\u003e\u003ccode\u003e4091816\u003c/code\u003e\u003c/a\u003e Fixed lint error. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/875\"\u003e#875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/9777ebe4f8dcbbd1248fd9c83ba631c23ec430d2\"\u003e\u003ccode\u003e9777ebe\u003c/code\u003e\u003c/a\u003e Fixed double-writes. (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/7815c6abe8079e84b55e8790e25596b9f70e5b1d\"\u003e\u003ccode\u003e7815c6a\u003c/code\u003e\u003c/a\u003e Small refactor of AWS Signer classes for both sync and async clients (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/866\"\u003e#866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/87aebcd653d4f1fb5112ee7c824c715118997d54\"\u003e\u003ccode\u003e87aebcd\u003c/code\u003e\u003c/a\u003e Added a support for search (\u003ccode\u003esearch_after\u003c/code\u003e parameter) (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/opensearch-project/opensearch-py/commit/6f761abf5e1a15eb678218aa7a3d3425e14ad99e\"\u003e\u003ccode\u003e6f761ab\u003c/code\u003e\u003c/a\u003e made custom headers be available to async aws signer (\u003ca href=\"https://redirect.github.com/opensearch-project/opensearch-py/issues/863\"\u003e#863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/opensearch-project/opensearch-py/compare/v2.8.0...v3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slack-sdk` from 3.35.0 to 3.36.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/slackapi/python-slack-sdk/releases\"\u003eslack-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.36.0\u003c/h2\u003e\n\u003ch2\u003eWhat's changed\u003c/h2\u003e\n\u003ch3\u003e👾 Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add support for elevate methods in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1703\"\u003eslackapi/python-slack-sdk#1703\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Tests\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etests: add tests to ensure web client is copyable in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1682\"\u003eslackapi/python-slack-sdk#1682\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: remove 3.6 CI support in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1683\"\u003eslackapi/python-slack-sdk#1683\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003efix: aiohttp test_init_with_loop broken test in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1697\"\u003eslackapi/python-slack-sdk#1697\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: reference creating an app with scopes to gather a token for installation in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1694\"\u003eslackapi/python-slack-sdk#1694\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDocs: Update old links, apply style guide, and generally copyedit/clean up the Python SDK docs. in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1699\"\u003eslackapi/python-slack-sdk#1699\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/technically-tracy\"\u003e\u003ccode\u003e@​technically-tracy\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🤖 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/helpers\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1678\"\u003eslackapi/python-slack-sdk#1678\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime-corejs3\u003c/code\u003e from 7.26.9 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1679\"\u003eslackapi/python-slack-sdk#1679\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump \u003ccode\u003e@​babel/runtime\u003c/code\u003e from 7.26.0 to 7.27.0 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1680\"\u003eslackapi/python-slack-sdk#1680\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump pdoc3 from 0.11.5 to 0.11.6 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1684\"\u003eslackapi/python-slack-sdk#1684\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the react group in /docs with 2 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1685\"\u003eslackapi/python-slack-sdk#1685\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1686\"\u003eslackapi/python-slack-sdk#1686\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1687\"\u003eslackapi/python-slack-sdk#1687\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1689\"\u003eslackapi/python-slack-sdk#1689\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1696\"\u003eslackapi/python-slack-sdk#1696\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1695\"\u003eslackapi/python-slack-sdk#1695\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump the docusaurus group in /docs with 5 updates in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1705\"\u003eslackapi/python-slack-sdk#1705\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1706\"\u003eslackapi/python-slack-sdk#1706\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Maintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehealth: publish test results to code cov in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1677\"\u003eslackapi/python-slack-sdk#1677\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eci: pin actions workflow step hashes and use minimum permissions in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1691\"\u003eslackapi/python-slack-sdk#1691\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore: increase the robustness of the uninstall script in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1704\"\u003eslackapi/python-slack-sdk#1704\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/WilliamBergamin\"\u003e\u003ccode\u003e@​WilliamBergamin\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003echore(release): version 3.36.0 in \u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/pull/1707\"\u003eslackapi/python-slack-sdk#1707\u003c/a\u003e - Thanks \u003ca href=\"https://github.com/zimeg\"\u003e\u003ccode\u003e@​zimeg\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMilestone\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/milestone/111\"\u003ehttps://github.com/slackapi/python-slack-sdk/milestone/111\u003c/a\u003e\n\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ehttps://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/5e5b89fec684cfa7be3628fe7dcec0aff5f3b0bf\"\u003e\u003ccode\u003e5e5b89f\u003c/code\u003e\u003c/a\u003e chore(release): version 3.36.0 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7b44826eac22b495f4d2aaafc70c62574eadad31\"\u003e\u003ccode\u003e7b44826\u003c/code\u003e\u003c/a\u003e chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1706\"\u003e#1706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d5c24b49ccc12cd69d5c10661ec40cb495843a57\"\u003e\u003ccode\u003ed5c24b4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1705\"\u003e#1705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/d9b99df50ee9150e287f2fee932d7ec3c3f8bf4a\"\u003e\u003ccode\u003ed9b99df\u003c/code\u003e\u003c/a\u003e chore: increase the robustness of the uninstall script (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1704\"\u003e#1704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1fcdcf981bac056ca6d6df48dc081e12496dd666\"\u003e\u003ccode\u003e1fcdcf9\u003c/code\u003e\u003c/a\u003e feat: add support for elevate methods (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1703\"\u003e#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/2f75504e9761ea3b7a5f934c542701c1247e8b7a\"\u003e\u003ccode\u003e2f75504\u003c/code\u003e\u003c/a\u003e cleanup (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1699\"\u003e#1699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/1b61c36352ff2a4b80b042e57cca7649a26285fa\"\u003e\u003ccode\u003e1b61c36\u003c/code\u003e\u003c/a\u003e chore(deps): bump codecov/test-results-action from 1.1.0 to 1.1.1 (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/7e366b19bd2b8e27e231ca598cc3d58138da2de0\"\u003e\u003ccode\u003e7e366b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the docusaurus group in /docs with 5 updates (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1696\"\u003e#1696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/27fae2f75d7d8d74fc9b873512cd8f242edd2f2e\"\u003e\u003ccode\u003e27fae2f\u003c/code\u003e\u003c/a\u003e Update test_aiohttp.py (\u003ca href=\"https://redirect.github.com/slackapi/python-slack-sdk/issues/1697\"\u003e#1697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slackapi/python-slack-sdk/commit/443ca03e425d93f47822a4de5776ff0595f5ed3d\"\u003e\u003ccode\u003e443ca03\u003c/code\u003e\u003c/a\u003e docs: reference creating an app with scopes to gather a token for installatio...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/slackapi/python-slack-sdk/compare/v3.35.0...v3.36.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor validation code to reduce bundle size [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5214\"\u003e#5214\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/bmaranville\"\u003e\u003ccode\u003e@​bmaranville\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd deprecation warnings when using Kaleido v0 or deprecated image export features [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5236\"\u003e#5177\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/53572f6532876fde279abfa63a47c056dc485540\"\u003e\u003ccode\u003e53572f6\u003c/code\u003e\u003c/a\u003e Update uv lock file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/3b5a65f1431eb2b17957af05b41ebc031d894d68\"\u003e\u003ccode\u003e3b5a65f\u003c/code\u003e\u003c/a\u003e version changes for v6.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/6b7565b594a0640f4181f4d1a027c1235f8eff7c\"\u003e\u003ccode\u003e6b7565b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5318\"\u003e#5318\u003c/a\u003e from plotly/update-plotlyjs-3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c2225b79f337bb4ae42268d50fb2d77c1ccd684f\"\u003e\u003ccode\u003ec2225b7\u003c/code\u003e\u003c/a\u003e add DeprecationWarning for upcoming change in locationmode 'country names'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/deef7a3345e42374ef16d181beb3922d38631343\"\u003e\u003ccode\u003edeef7a3\u003c/code\u003e\u003c/a\u003e update plotly/labextension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/0589b229076c3c75ad40fa3875f276e1e5e7dfe8\"\u003e\u003ccode\u003e0589b22\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to 3.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/694b0366419228b05b67ee6f34ee2d1c53734360\"\u003e\u003ccode\u003e694b036\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5308\"\u003e#5308\u003c/a\u003e from plotly/update-doc-string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/480a1aff40c631fdd34df16e50beb75debdce60b\"\u003e\u003ccode\u003e480a1af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5287\"\u003e#5287\u003c/a\u003e from jdbeel/update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/c07de25a169eb36bc895755be1cfcb79fcada21f\"\u003e\u003ccode\u003ec07de25\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into update-external-renderer-default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/9f4b774e783c9eea70fcc9631a18d107ea3fe845\"\u003e\u003ccode\u003e9f4b774\u003c/code\u003e\u003c/a\u003e Update _json.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `kaleido` from 0.2.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/kaleido/releases\"\u003ekaleido's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ev1.1.0 fixes various bugs found through improved testing.\u003c/p\u003e\n\u003cp\u003eMost importantly, it adds to the API an option to start a persistent sync server which speeds up subsequence calls to \u003ccode\u003ewrite_fig_sync\u003c/code\u003e, \u003ccode\u003ecalc_fig_sync\u003c/code\u003e, etc.\u003c/p\u003e\n\u003cp\u003eUse:\n\u003ccode\u003ekaliedo.start_sync_server()\u003c/code\u003e and \u003ccode\u003ekaliedo.stop_sync_server()\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0\u003c/h2\u003e\n\u003cp\u003eKaleido v1 introduces a new API. If you're currently using v0, you'll need to make changes to your code and environment where you are running Kaleido.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf using Kaleido v1 with Plotly.py, you will need to install Plotly.py v6.1.1 or later.\u003c/li\u003e\n\u003cli\u003eChrome is no longer included with Kaleido. Kaleido will look for an existing Chrome installation, but also provides commands for installing Chrome. If you don't have Chrome, you'll need to install it. See the installation section above for instructions.\u003c/li\u003e\n\u003cli\u003eIf your code uses Kaleido directly: \u003ccode\u003ekaleido.scopes.plotly\u003c/code\u003e has been removed in v1. Kaleido v1 provides \u003ccode\u003ewrite_fig\u003c/code\u003e and \u003ccode\u003ewrite_fig_sync\u003c/code\u003e for exporting Plotly figures.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.0.0rc15\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndrew/easier builds by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/315\"\u003eplotly/Kaleido#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd pass through kopts dict for kaleido args by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/316\"\u003eplotly/Kaleido#316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003emathjax\u003c/code\u003e arg when passed to Kaleido constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Changelog by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/321\"\u003eplotly/Kaleido#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd migration guide and make small updates by \u003ca href=\"https://github.com/LiamConnors\"\u003e\u003ccode\u003e@​LiamConnors\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/314\"\u003eplotly/Kaleido#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename LICENSE.md to LICENSE by \u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/329\"\u003eplotly/Kaleido#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePass plotlyjs arg to PageGenerator constructor by \u003ca href=\"https://github.com/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/336\"\u003eplotly/Kaleido#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/fix gha by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/337\"\u003eplotly/Kaleido#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix package name in GHA by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/338\"\u003eplotly/Kaleido#338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape user-supplied strings regex by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/339\"\u003eplotly/Kaleido#339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAndrew/sanitize title by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/340\"\u003eplotly/Kaleido#340\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/emilykl\"\u003e\u003ccode\u003e@​emilykl\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/320\"\u003eplotly/Kaleido#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tschm\"\u003e\u003ccode\u003e@​tschm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/330\"\u003eplotly/Kaleido#330\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\"\u003ehttps://github.com/plotly/Kaleido/compare/v1.0.0rc11...v1.0.0rc15\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0rc11\u003c/h2\u003e\n\u003cp\u003eThis is a pre-release version of Kaleido 1.0.0 which contains a number of breaking changes relative to Kaleido 0.x. It is not compatible with the latest release of Plotly. To generate images with Plotly you should install the latest stable version of and Kaleido (v0.2.1).\u003c/p\u003e\n\u003cp\u003eDocumentation for the new API can be found in the README: \u003ca href=\"https://github.com/plotly/Kaleido\"\u003ehttps://github.com/plotly/Kaleido\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.0-rc.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003emerge devtools/main by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/206\"\u003eplotly/Kaleido#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecause kaleido to explicitly fail if no chromium: by \u003ca href=\"https://github.com/ayjayt\"\u003e\u003ccode\u003e@​ayjayt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/plotly/Kaleido/pull/224\"\u003eplotly/Kaleido#224\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.0\"\u003ehttps://github.com/plotly/Kaleido/compare/v0.4.0.rc.5...v1.0.0-rc.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/plotly/Kaleido/commit/992a307ba2c9d699e0a07a9f7a74d754bec30c16\"\u003e\u003ccode\u003e992a307\u003c/code\u003e\u003c/a\u003e Update changelog (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/fc5486a0c08841920a9c2352c7f65c29e18f0f6a\"\u003e\u003ccode\u003efc5486a\u003c/code\u003e\u003c/a\u003e Andrew/test utils (\u003ca href=\"https://redirect.github.com/plotly/kaleido/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/e0d5907d554aaf46a8bb48a2dc260a59ced77cbf\"\u003e\u003ccode\u003ee0d5907\u003c/code\u003e\u003c/a\u003e Fix to properly validate Path() types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/4f624284b85be280d9747084197cefb6f81f305a\"\u003e\u003ccode\u003e4f62428\u003c/code\u003e\u003c/a\u003e Test Path() as well as str() in filenotfound tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/6563d4f219e5f0465aa5040e1166a942aef71d68\"\u003e\u003ccode\u003e6563d4f\u003c/code\u003e\u003c/a\u003e Clear up mathjax logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/9ed8ee699187fdc76b146de502b9c1e875120d10\"\u003e\u003ccode\u003e9ed8ee6\u003c/code\u003e\u003c/a\u003e Organize a bit conftest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/34cf8cfc93633d01856c34ef1369696948e2189b\"\u003e\u003ccode\u003e34cf8cf\u003c/code\u003e\u003c/a\u003e Remove hypo deadlines for slow CI runners.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/27687013eca1c09d348015e8b33802af310e7415\"\u003e\u003ccode\u003e2768701\u003c/code\u003e\u003c/a\u003e Tone down unreasonable 20 processor test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/518985010c103a4a9becf671bce5a55875d851b3\"\u003e\u003ccode\u003e5189850\u003c/code\u003e\u003c/a\u003e Fix bad logic.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/Kaleido/commit/a71a0baca052cba4106f268dae7041b930e9a615\"\u003e\u003ccode\u003ea71a0ba\u003c/code\u003e\u003c/a\u003e Add yet more logging.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/kaleido/compare/v0.2.1...v1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.3.0 to 2.3.2\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.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.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/4665c10899bc413b639194f6fb8665a5c70f7db5\"\u003e\u003ccode\u003e4665c10\u003c/code\u003e\u003c/a\u003e RLS: 2.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/633c68b91808441eba7d73b630a82b713ba19da8\"\u003e\u003ccode\u003e633c68b\u003c/code\u003e\u003c/a\u003e DOC: fix syntax in whatsnew file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/456ad4702cb017aab36e2d09a4029b1b085198f5\"\u003e\u003ccode\u003e456ad47\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62152\"\u003e#62152\u003c/a\u003e on branch 2.3.x (DOC: prepare 2.3.2 whatsnew notes for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6cae6444444ed7943ceffbd5990cd8249dd5b47c\"\u003e\u003ccode\u003e6cae644\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: move and reword whatsnew note for replace fix (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/57865\"\u003eGH-57865\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/a91c50a58c372cddf104fd60241c7284bbf8fc80\"\u003e\u003ccode\u003ea91c50a\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62147\"\u003e#62147\u003c/a\u003e on branch 2.3.x (DOC: correct and rewrite string migration...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f7a2cfdf2ed08016167ae6c5e577c54949a849b2\"\u003e\u003ccode\u003ef7a2cfd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG/DEPR: logical operation with bool and string (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/61995\"\u003e#61995\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/7981a43db4339826a3ce5020e9b1b931e604e5bd\"\u003e\u003ccode\u003e7981a43\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62124\"\u003e#62124\u003c/a\u003e on branch 2.3.x (CI/BLD: don't use strict xfail for '%m.%Y...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/fafbcbd03d1721830f4df8255abdab341db2a583\"\u003e\u003ccode\u003efafbcbd\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG(CoW): also raise for chained assignment for .at / .iat (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3ac64a714886d917ca24ba637a85c4aaf563fc1b\"\u003e\u003ccode\u003e3ac64a7\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: Fix Series.str.contains with compiled regex on Arrow st...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/1f2dc4fd8a2503773b6f90cb5e8cc5c3172c3c11\"\u003e\u003ccode\u003e1f2dc4f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix Series.str.fullmatch() and Series.str.match() with ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.3.0...v2.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mmh3` from 5.1.0 to 5.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hajimes/mmh3/releases\"\u003emmh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ehttps://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.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/hajimes/mmh3/blob/master/CHANGELOG.md\"\u003emmh3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[5.2.0] - 2025-07-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread\nsafety for the no-GIL variant is not fully tested yet. Please report any\nissues you encounter (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/134\"\u003e#134\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/136\"\u003e#136\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels,\nenabled by the major version update of\n\u003ca href=\"https://github.com/pypa/cibuildwheel\"\u003ecibuildwheel\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/hajimes/mmh3/pull/135\"\u003e#135\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/hajimes/mmh3/commit/8cf79c1236a2617ea49bb4c719583d29f4d1f435\"\u003e\u003ccode\u003e8cf79c1\u003c/code\u003e\u003c/a\u003e Bump version to 5.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9e690d8d28e941ed147b42486beb2bc23611d594\"\u003e\u003ccode\u003e9e690d8\u003c/code\u003e\u003c/a\u003e Update documentation to prepare next release \u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/137\"\u003e#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/9a1ece3e1fd3808aaa3a1695c42a07d20738f670\"\u003e\u003ccode\u003e9a1ece3\u003c/code\u003e\u003c/a\u003e Add no-GIL support (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/c0a5022d74a0ace553d62d0fdb29fd7a99ee109a\"\u003e\u003ccode\u003ec0a5022\u003c/code\u003e\u003c/a\u003e Add support for Android/iOS wheels (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/b16775822e21347805ea9144efa2e20cd276fd21\"\u003e\u003ccode\u003eb167758\u003c/code\u003e\u003c/a\u003e Add basic support for Python 3.14 (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/f8122a35ef7d292eb1d089e89753c71b18916308\"\u003e\u003ccode\u003ef8122a3\u003c/code\u003e\u003c/a\u003e Bump GHA dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/a64b2c07f8e5e68817881782f9685658f19d3c44\"\u003e\u003ccode\u003ea64b2c0\u003c/code\u003e\u003c/a\u003e Bump PyPI dependencies (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/132\"\u003e#132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hajimes/mmh3/commit/0066f4d65b6b9e8806f07aad6e6dac8bf957f3db\"\u003e\u003ccode\u003e0066f4d\u003c/code\u003e\u003c/a\u003e Fix documents (\u003ca href=\"https://redirect.github.com/hajimes/mmh3/issues/122\"\u003e#122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/hajimes/mmh3/compare/v5.1.0...v5.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.26.0 to 4.30.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.30.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3603\"\u003etox-dev/tox#3603\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure automatically provisioned environment is torn down by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3601\"\u003etox-dev/tox#3601\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3604\"\u003etox-dev/tox#3604\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.1...4.30.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.30.1...4.30.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.30.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Tox from hanging with \u003ccode\u003e--installpkg\u003c/code\u003e sdist due to orphaned build backend by \u003ca href=\"https://github.com/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\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/vytas7\"\u003e\u003ccode\u003e@​vytas7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3530\"\u003etox-dev/tox#3530\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.30.0...4.30.1...\n\n_Description has been truncated_","html_url":"https://github.com/openshift-assisted/prow-jobs-scraper/pull/434","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-assisted%2Fprow-jobs-scraper/issues/434","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/434/packages"}}]}