Repository navigation
[CI]: Let a patch or minor release edit only __about__.py #877
Copy link
Copy link
Open
Description
Found while reviewing PR #876: release SDK 3.0.1.
Problem
RELEASING.md says a release bumps __version__ in __about__.py. A core release must also edit five other files, or CI fails:
packages/aws-durable-execution-sdk-python-conformance-tests{,-otel,-telemetry}/pyproject.tomlpinaws-durable-execution-sdk-python==3.0.1..github/tests/otel_lifecycle_compatibility_test.pyand.github/tests/otel_legacy_registration_rejection_test.pyassert that the installed core version is3.0.1.
PR #738: release SDK 2.0.1 needed the same pin edits. The conformance packages also pin otel ==2.0.0 and telemetry-exporter ==1.0.0. The lifecycle test also asserts otel 2.0.0. So otel and telemetry-exporter releases have the same problem.
Why the exact versions add nothing
Conformance pins:
- The root hatch
default,testandtypesenvironments install everypackages/*member from the checkout. - So an exact pin resolves only when it equals the checkout's version.
- The conformance Lambda bundles do not read the pin. Core conformance copies the SDK source into
lambda-build/. OTel and telemetry conformance install the SDK from git at the commit under test. - The conformance packages are not published.
- So the pin never selects a version. It can only fail to resolve after a bump.
Test assertions:
- Both tests run after
.github/scripts/install_otel_test_wheels.py. - That script installs the wheel whose version matches
__about__.py. It then checks the installed files against that wheel. - So the installed version always equals
__about__.py. The assertions fail only when someone forgets to edit them.
Proposed change
- The conformance packages use ranges, as the otel and telemetry-exporter packages already do:
aws-durable-execution-sdk-python>=3.0.0,<4,aws-durable-execution-sdk-python-otel>=2.0.0,<3,aws-durable-execution-sdk-python-telemetry-exporter>=1.0.0,<2. - The two tests check the major version, for example
Version(version("aws-durable-execution-sdk-python")).major == 3. The lifecycle test checks otel major 2 the same way. - The legacy test keeps otel
== "1.0.0", because that environment installs that exact release from PyPI.
A major release still edits the ranges and the major checks.
Acceptance criteria
- With only the core
__about__.pyset to3.0.2,hatch run test:all,hatch run test-wheel-otel:testandhatch run test-wheel-otel-legacy:testpass. The wheel lanes needhatch buildin the core and otel package directories first. - The same commands pass with only the otel
__about__.pyset to2.0.1, and with only the telemetry-exporter__about__.pyset to1.0.1.
Metadata
Metadata
Assignees
Labels
No labels
Activity