From 0498cc7a27320ebdc433006335608cf58eb39841 Mon Sep 17 00:00:00 2001 From: karezche <64801825+karenc-bq@users.noreply.github.com> Date: Wed, 27 May 2026 19:02:25 -0700 Subject: [PATCH 1/2] chore: bump version and update changelog --- CHANGELOG.md | 26 ++++++++++++++++++++++ Maintenance.md | 12 +++++----- aws_advanced_python_wrapper/driver_info.py | 2 +- poetry.lock | 6 ++--- pyproject.toml | 2 +- 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be973d83d..3eb2e7009 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,31 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/#semantic-versioning-200). +## [3.0.0] - 2026-06-02 + +### :crab: Breaking Changes +> [!WARNING] +> 3.0.0 changes the default `cluster_id` behavior. Applications connecting to **multiple database clusters** must now explicitly set a unique `cluster_id` for each cluster. See the [Cluster ID documentation](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-wrapper/ClusterId.md) for details. +> +> #### Migration +> +> | Scenario | Action Required | +> |---|---| +> | Single database cluster | No changes required | +> | Multiple database clusters | Review all connection strings and add a unique `cluster_id` parameter per cluster. See the [Cluster ID documentation](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-wrapper/ClusterId.md) for configuration guidance. | + +### :magic_wand: Added +* [SQLAlchemy ORM support](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-wrapper/SQLAlchemySupport.md). + +### :bug: Fixed +* New pooled connections created with stale credentials, and PostgreSQL error handler unable to correctly handle auth errors nested in connection errors ([PR #1231](https://github.com/aws/aws-advanced-python-wrapper/pull/1231)). +* Read/Write Splitting plugins not subscribed to the execute pipeline, causing idle connections to not be correctly closed during failover ([PR #1117](https://github.com/aws/aws-advanced-python-wrapper/pull/1117)). + +### :crab: Changed +* Updated the default plugin list: + * Added the [Aurora Initial Connection Strategy Plugin](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-wrapper/using-plugins/UsingTheAuroraInitialConnectionStrategyPlugin.md) for both PostgreSQL and MySQL driver dialects. + * Removed the [Host Monitoring Plugin V2](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-wrapper/using-plugins/UsingTheHostMonitoringPlugin.md) from the default plugins for MySQL driver dialect. + ## [2.1.0] - 2026-02-11 ### :magic_wand: Added * [Failover v2 Plugin](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-wrapper/using-plugins/UsingTheFailoverPlugin.md), an improved version of the failover plugin with enhanced reliability ([PR #1079](https://github.com/aws/aws-advanced-python-wrapper/pull/1079)). @@ -102,6 +127,7 @@ The Amazon Web Services (AWS) Advanced Python Wrapper allows an application to t * Support for PostgreSQL * Support for MySQL +[3.0.0]: https://github.com/aws/aws-advanced-python-wrapper/compare/2.1.0...3.0.0 [2.1.0]: https://github.com/aws/aws-advanced-python-wrapper/compare/2.0.0...2.1.0 [2.0.0]: https://github.com/aws/aws-advanced-python-wrapper/compare/1.4.0...2.0.0 [1.4.0]: https://github.com/aws/aws-advanced-python-wrapper/compare/1.3.0...1.4.0 diff --git a/Maintenance.md b/Maintenance.md index 92fa57fe7..9d60d748e 100644 --- a/Maintenance.md +++ b/Maintenance.md @@ -9,7 +9,8 @@ | July 28, 2025 | [Release 1.3.0](https://github.com/aws/aws-advanced-python-wrapper/releases/tag/1.3.0) | | October 17, 2025 | [Release 1.4.0](https://github.com/aws/aws-advanced-python-wrapper/releases/tag/1.4.0) | | January 14, 2026 | [Release 2.0.0](https://github.com/aws/aws-advanced-python-wrapper/releases/tag/2.0.0) | -| February 11, 2026 | [Release 2.0.0](https://github.com/aws/aws-advanced-python-wrapper/releases/tag/2.1.0) | +| February 11, 2026 | [Release 2.1.0](https://github.com/aws/aws-advanced-python-wrapper/releases/tag/2.1.0) | +| June 2, 2026 | [Release 3.0.0](https://github.com/aws/aws-advanced-python-wrapper/releases/tag/3.0.0) | `aws-advanced-python-wrapper` [follows semver](https://semver.org/#semantic-versioning-200) which means we will only release breaking changes in major versions. Generally speaking patches will be released to fix existing problems without @@ -60,7 +61,8 @@ That said, PRs with said back-ports are welcome and will follow the project's re No new releases will result from these changes, but interested parties can create their own distribution from the updated source after the PRs are merged. -| Major Version | Latest Minor Version | Status | Initial Release | Maintenance Window Start | Maintenance Window End | -|---------------|----------------------|-------------|---------------------|------------------------------|------------------------| -| 1 | 1.4.0 | Maintenance | May 16, 2024 | January 14, 2026 | January 14, 2027 | -| 2 | 2.1.0 | Current | January 14, 2026 | N/A | N/A | +| Major Version | Latest Minor Version | Status | Initial Release | Maintenance Window Start | Maintenance Window End | +|---------------|----------------------|-------------|------------------|--------------------------|------------------------| +| 1 | 1.4.0 | Maintenance | May 16, 2024 | January 14, 2026 | January 14, 2027 | +| 2 | 2.1.0 | Maintenance | January 14, 2026 | June 2, 2026 | June 2, 2027 | +| 3 | 3.0.0 | Current | June 2, 2026 | N/A | N/A | diff --git a/aws_advanced_python_wrapper/driver_info.py b/aws_advanced_python_wrapper/driver_info.py index eb5bd768e..b75c85abe 100644 --- a/aws_advanced_python_wrapper/driver_info.py +++ b/aws_advanced_python_wrapper/driver_info.py @@ -15,4 +15,4 @@ class DriverInfo: DRIVER_NAME = "aws_advanced_python_wrapper" - DRIVER_VERSION = "2.1.0" + DRIVER_VERSION = "3.0.0" diff --git a/poetry.lock b/poetry.lock index 063bd8da1..6cb9e8576 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.3 and should not be changed by hand. [[package]] name = "asgiref" @@ -2118,10 +2118,10 @@ files = [ ] [package.dependencies] -botocore = ">=1.37.4,<2.0a.0" +botocore = ">=1.37.4,<2.0a0" [package.extras] -crt = ["botocore[crt] (>=1.37.4,<2.0a.0)"] +crt = ["botocore[crt] (>=1.37.4,<2.0a0)"] [[package]] name = "six" diff --git a/pyproject.toml b/pyproject.toml index 7cf7f9c61..e8923de58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "aws_advanced_python_wrapper" -version = "2.1.0" +version = "3.0.0" description = "Amazon Web Services (AWS) Advanced Python Wrapper" authors = ["Amazon Web Services"] readme = "README.md" From 8f430781312669eb8a71934e83802dd42cea29de Mon Sep 17 00:00:00 2001 From: karezche <64801825+karenc-bq@users.noreply.github.com> Date: Tue, 2 Jun 2026 14:55:31 -0700 Subject: [PATCH 2/2] chore: remove fragile unit tests --- .../aws_advanced_python_wrapper_messages.properties | 2 +- tests/unit/test_iam_plugin.py | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/aws_advanced_python_wrapper/resources/aws_advanced_python_wrapper_messages.properties b/aws_advanced_python_wrapper/resources/aws_advanced_python_wrapper_messages.properties index ff596d541..b5f0da3c2 100644 --- a/aws_advanced_python_wrapper/resources/aws_advanced_python_wrapper_messages.properties +++ b/aws_advanced_python_wrapper/resources/aws_advanced_python_wrapper_messages.properties @@ -26,7 +26,7 @@ AdfsCredentialsProviderFactory.SignOnPagePostActionUrl=[AdfsCredentialsProviderF AdfsCredentialsProviderFactory.SignOnPagePostActionRequestFailed=[AdfsCredentialsProviderFactory] ADFS SignOn Page POST action failed with HTTP status '{}', reason phrase '{}', and response '{}' AdfsCredentialsProviderFactory.SignOnPageUrl=[AdfsCredentialsProviderFactory] ADFS SignOn URL: '{}' -AwsSdk.UnsupportedRegion=[AwsSdk] Unsupported AWS region {}. For supported regions please read https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html +AwsSdk.UnsupportedRegion=[AwsSdk] Unsupported AWS region {}. Please check AWS documentation for supported AWS regions. AwsSecretsManagerPlugin.ConnectException=[AwsSecretsManagerPlugin] Error occurred while opening a connection: {} AwsSecretsManagerPlugin.EndpointOverrideInvalidConnection=[AwsSecretsManagerPlugin] A connection to the provided secrets_manager_endpoint could not be established: "{}". diff --git a/tests/unit/test_iam_plugin.py b/tests/unit/test_iam_plugin.py index 3f5285602..758b3ea8e 100644 --- a/tests/unit/test_iam_plugin.py +++ b/tests/unit/test_iam_plugin.py @@ -14,7 +14,6 @@ from __future__ import annotations -import urllib.request from datetime import datetime, timedelta import pytest @@ -383,12 +382,6 @@ def test_connect_with_specified_host(iam_host: str, mocker, mock_plugin_service, assert actual_token.is_expired() is False -def test_aws_supported_regions_url_exists(): - url = "https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html" - request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - assert 200 == urllib.request.urlopen(request).getcode() - - @pytest.mark.parametrize("host", [ pytest.param("<>"), pytest.param("#"),