Skip to content

Commit 94f39f4

Browse files
committed
fix(deps): keep boto3 in core; [aws] extra is forward-compat alias
Reverts the breaking-change part of the previous deps refactor. boto3 + botocore stay in [project.dependencies] for now so pip install orb-py continues to work for existing AWS users. The [aws] extra is preserved as the canonical install path going forward — when the second provider lands, AWS deps will move out of core and operators already using pip install orb-py[aws] will see no change. Version reverted to 1.6.2 (semantic-release manages bumps).
1 parent 0bf53e2 commit 94f39f4

3 files changed

Lines changed: 33 additions & 14 deletions

File tree

CHANGELOG.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,38 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
77

88
<!-- insertion marker -->
9-
## [1.7.0] — Breaking Change
10-
11-
### Breaking Changes
12-
13-
- `boto3` and `botocore` removed from core `[project.dependencies]`.
14-
Install `orb-py[aws]` (or `orb-py[all]`) to restore the previous behaviour.
15-
Plain `pip install orb-py` no longer installs the AWS SDK.
9+
## Unreleased
1610

1711
### Added
1812

19-
- New `[aws]` extra: `boto3>=1.42.21`, `botocore>=1.42.21`.
13+
- New `[aws]` extra (alias for AWS deps currently in core). The canonical install
14+
command going forward is `pip install orb-py[aws]`. This continues to work
15+
unchanged when AWS deps move out of core in a future major version.
2016
- New `[all-providers]` meta-extra: pulls in all currently implemented providers.
2117
- New `[monitoring-aws]` extra: AWS-specific OpenTelemetry boto instrumentation (previously bundled inside `[monitoring]`).
2218
- New `[test-aws]` extra: moto + response-mocking deps for AWS test suites.
23-
- Architecture test `test_boto3_leak_detection.py`: asserts boto3/botocore are never imported outside `providers/aws/`.
24-
- Unit tests `test_no_provider_install.py`: verifies ORB core modules boot cleanly when `[aws]` extra is absent.
19+
- Architecture test `test_boto3_leak_detection.py`: asserts boto3/botocore are never imported outside `providers/aws/` except by guarded backward-compat shims.
20+
- Unit tests `test_no_provider_install.py`: verifies ORB core modules boot cleanly when AWS deps are absent.
2521

2622
### Changed
2723

2824
- `[monitoring]` extra no longer includes `opentelemetry-instrumentation-boto` (use `[monitoring-aws]`).
2925
- `[all]` extra now includes `[all-providers]` so `pip install orb-py[all]` still pulls everything.
3026
- `[dev]` shim extra now includes `[all-providers]` for full local development.
31-
- Three module-level import leaks fixed with `try/except ImportError` guards:
27+
- Three module-level import sites guarded with `try/except ImportError` so ORB core boots when AWS extras are absent:
3228
`config/schemas/cleanup_schema.py`, `infrastructure/storage/registration.py`,
3329
`providers/registration.py` (deprecated shims).
3430
- `tests/conftest.py`: bare `import boto3` replaced with guarded `AWS_AVAILABLE` flag; AWS provider tests auto-skip when `[aws]` extra is absent.
3531

32+
### Notes
33+
34+
- `boto3` + `botocore` **remain in core** `[project.dependencies]` for now to
35+
preserve backward compatibility — `pip install orb-py` still works unchanged.
36+
- When the second provider (Azure / GCP / OCI) lands, AWS deps will move from
37+
core to the `[aws]` extra and a major-version bump will signal the breaking
38+
change. Operators who use `pip install orb-py[aws]` today will see no
39+
behavior change at that cutover.
40+
3641
## Unreleased
3742

3843
<small>[Compare with latest](https://github.com/awslabs/open-resource-broker/compare/v0.1.0rc0...HEAD)</small>

pyproject.toml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "orb-py"
7-
version = "1.7.0"
7+
version = "1.6.2"
88
description = "Open Resource Broker (ORB) — dynamic cloud resource provisioning via CLI and REST API"
99
readme = "README.md"
1010
license = "Apache-2.0"
@@ -53,11 +53,21 @@ dependencies = [
5353
"requests>=2.31.0",
5454
"PyYAML>=6.0.0", # Exported API (lazy-loaded)
5555
"jsonschema>=4.17.0",
56+
# AWS provider deps — currently in core for backward compatibility.
57+
# The canonical install path going forward is `pip install orb-py[aws]`,
58+
# which already works today. When the second provider lands these will
59+
# move to the [aws] extra and a major-version bump will signal the
60+
# breaking change for operators who installed without extras.
61+
"boto3>=1.42.21",
62+
"botocore>=1.42.21",
5663
]
5764

5865
[project.optional-dependencies]
5966
# ── Provider extras ────────────────────────────────────────────────────────
60-
# AWS provider — boto3 and botocore (moved from core in 1.7.0; breaking change)
67+
# AWS provider — explicit opt-in alias for the AWS deps currently in core.
68+
# Pinning the same versions keeps `pip install orb-py[aws]` resolving identically
69+
# to the bare install and future-proofs operator install commands for the day
70+
# AWS deps move out of core.
6171
aws = [
6272
"boto3>=1.42.21",
6373
"botocore>=1.42.21",

uv.lock

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)