From 75597510aa212c086077a03d7513835569be820a Mon Sep 17 00:00:00 2001 From: Joshua Semar Date: Tue, 16 Dec 2025 12:49:17 -0600 Subject: [PATCH 1/6] feat!: drop Python 3.7-3.9 support, add Python 3.10-3.13 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE: Python 3.7, 3.8, and 3.9 are no longer supported. Minimum required Python version is now 3.10. - Update python dependency from ^3.7 to ^3.10 - Update classifiers to list Python 3.10, 3.11, 3.12, 3.13 - Update aiohttp to ^3.9.0 for Python 3.10+ compatibility - Update dev dependencies: pytest ^7.0.0, black ^22.0.0, flake8 ^6.0.0 - Fix black target-version typo and update to py310 This change aligns with the CI configuration that tests against Python 3.10-3.13 and uses updated package versions compatible with these Python versions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- pyproject.toml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1534ad4..a53efc7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,9 +14,10 @@ classifiers = [ "Natural Language :: English", "Intended Audience :: Developers", "Programming Language :: Python", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Libraries :: Python Modules" ] @@ -32,8 +33,8 @@ bump = true files = ["*.py", "*/__init__.py", "*/__version__.py", "*/version.py"] [tool.poetry.dependencies] -python = "^3.7" -aiohttp = "^3.7.4" +python = "^3.10" +aiohttp = "^3.9.0" requests = "^2.25.1" python-dotenv = "^0.15.0" dataclasses-json = "^0.5.3" @@ -41,11 +42,11 @@ fuuid = "^0.1.0" poetry-dynamic-versioning = "^0.13.0" [tool.poetry.dev-dependencies] -pytest = ">=5.0" +pytest = "^7.0.0" pytest-cov = "^2.11.1" pytest-mock = "^3.6.1" -black = "^20.8b1" -flake8 = "^3.8.4" +black = "^22.0.0" +flake8 = "^6.0.0" Sphinx = "^3.5.2" tox = "^3.23.0" coverage = "^5.5" @@ -57,7 +58,7 @@ responses = "^0.13.3" [tool.black] line-length = 100 -target-verstion = ["py37"] +target-version = ["py310"] safe = true [tool.isort] From b927df294256961673ab9c08206cbded6154cca7 Mon Sep 17 00:00:00 2001 From: Joshua Semar Date: Tue, 16 Dec 2025 12:54:50 -0600 Subject: [PATCH 2/6] fix: add release-please v4 configuration files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add required configuration for release-please v4: - .release-please-manifest.json: Tracks current version (1.0.0) - release-please-config.json: Configures release strategy for Python package Without these files, release-please v4 cannot properly detect and bump versions for breaking changes. This will allow the breaking change in commit 7559751 to properly trigger a major version bump to 2.0.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .release-please-manifest.json | 3 +++ release-please-config.json | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..37fcefa --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.0.0" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..e8ffd27 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,11 @@ +{ + "packages": { + ".": { + "release-type": "python", + "package-name": "shipengine", + "changelog-path": "CHANGELOG.md", + "bump-minor-pre-major": false, + "bump-patch-for-minor-pre-major": false + } + } +} From 6d27544667522cf7c4357340abef3121d0007d9e Mon Sep 17 00:00:00 2001 From: Joshua Semar Date: Tue, 16 Dec 2025 12:59:34 -0600 Subject: [PATCH 3/6] fix: update release-please manifest to current version 1.0.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The manifest was set to 1.0.0 but the actual codebase is at 1.0.2 (per pyproject.toml and CHANGELOG.md). This caused release-please to look at all commits since 1.0.0 and bump to 1.0.1 instead of properly detecting the breaking change (commit 7559751) that should bump to 2.0.0. By setting the manifest to 1.0.2, release-please will only consider commits after that version, properly detecting the breaking change and bumping to 2.0.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .release-please-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 37fcefa..b870c5e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.0.0" + ".": "1.0.2" } From 9fc7feb59d506946d0dc9be23ed9aac33cc7e60f Mon Sep 17 00:00:00 2001 From: Joshua Semar Date: Tue, 16 Dec 2025 13:02:45 -0600 Subject: [PATCH 4/6] chore: trigger release-please to regenerate with v1.0.2 baseline From 155e3f31ff95f53a64a4ac0328ddadcb6676c4e9 Mon Sep 17 00:00:00 2001 From: Joshua Semar Date: Tue, 16 Dec 2025 13:09:19 -0600 Subject: [PATCH 5/6] chore: trigger release-please to regenerate PR From 97081ed70f1b29a2dd9013b50164e2fde1c405a7 Mon Sep 17 00:00:00 2001 From: Joshua Semar Date: Tue, 16 Dec 2025 13:13:16 -0600 Subject: [PATCH 6/6] chore: release 2.0.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 19 +++++++++++++++++++ pyproject.toml | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b870c5e..895bf0e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.0.2" + ".": "2.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ce1df6..6696b3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [2.0.0](https://github.com/ShipEngine/shipengine-python/compare/v1.0.2...v2.0.0) (2025-12-16) + +### ⚠ BREAKING CHANGES + +* **Python Support**: Dropped support for Python 3.7, 3.8, and 3.9. Minimum required Python version is now 3.10. + +### Features + +* Add support for Python 3.10, 3.11, 3.12, and 3.13 ([7559751](https://github.com/ShipEngine/shipengine-python/commit/75597510aa212c086077a03d7513835569be820a)) +* Update CI/CD workflows to use current GitHub Actions versions +* Update package dependencies for Python 3.10+ compatibility + +### Dependencies + +* Update aiohttp from ^3.7.4 to ^3.9.0 +* Update pytest from >=5.0 to ^7.0.0 +* Update black from ^20.8b1 to ^22.0.0 +* Update flake8 from ^3.8.4 to ^6.0.0 + ## [1.0.0](https://www.github.com/ShipEngine/shipengine-python/compare/v1.0.0...v1.0.0) (2021-08-11) ### Miscellaneous Chores diff --git a/pyproject.toml b/pyproject.toml index a53efc7..59d75ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "shipengine" -version = "1.0.2" +version = "2.0.0" description = "The official Python library for ShipEngine API." readme = "README.md" authors = ["ShipEngine "]