Skip to content

Commit 5b00b47

Browse files
committed
Merge remote-tracking branch 'upstream/main' into fix/remove-invoke-config-timeout
# Conflicts: # docs/architecture.md # docs/core/invoke.md # packages/aws-durable-execution-sdk-python/tests/operation/invoke_test.py
2 parents 619b09e + a244a18 commit 5b00b47

367 files changed

Lines changed: 60580 additions & 12818 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
title: "[Major Release]: "
2+
labels: ["major-release", "breaking-change"]
3+
body:
4+
- type: markdown
5+
attributes:
6+
value: |
7+
Use this template to propose a major version release. Major releases include breaking changes
8+
that require careful planning, communication, and migration support.
9+
10+
- type: input
11+
id: proposed-version
12+
attributes:
13+
label: Proposed Version Number
14+
description: The target major version number for this release
15+
placeholder: "e.g., 2.0.0"
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: breaking-changes
21+
attributes:
22+
label: Description of the Breaking Changes
23+
description: List all breaking changes included in this release with clear before/after examples
24+
placeholder: |
25+
1. **Change**: Description of the breaking change
26+
- Before: `old_api()`
27+
- After: `new_api()`
28+
29+
2. **Change**: Description of the breaking change
30+
- Before: ...
31+
- After: ...
32+
validations:
33+
required: true
34+
35+
- type: textarea
36+
id: justification
37+
attributes:
38+
label: Justification for the Changes
39+
description: Explain why these breaking changes are necessary and what problems they solve
40+
placeholder: |
41+
- Why can't this be done in a backward-compatible way?
42+
- What user pain points or technical debt does this address?
43+
- What benefits do users gain from upgrading?
44+
validations:
45+
required: true
46+
47+
- type: textarea
48+
id: consuming-code-changes
49+
attributes:
50+
label: Changes Needed in Consuming Code
51+
description: Describe what consumers of this SDK need to change in their code to adopt the new version
52+
placeholder: |
53+
- Step-by-step migration instructions
54+
- Code examples showing required changes
55+
- Any tooling or codemods available to assist migration
56+
validations:
57+
required: true
58+
59+
- type: textarea
60+
id: inflight-impact
61+
attributes:
62+
label: Impact to In-flight Executions
63+
description: Describe how this release affects durable executions that are currently in progress
64+
placeholder: |
65+
- Can in-flight executions continue running after upgrade?
66+
- Is there a required draining period?
67+
- Are checkpointed states compatible across versions?
68+
- What happens to executions that are suspended (waiting)?
69+
validations:
70+
required: true
71+
72+
- type: textarea
73+
id: alternatives
74+
attributes:
75+
label: Alternatives Explored
76+
description: Describe alternative approaches that were considered and why they were not chosen
77+
placeholder: |
78+
1. **Alternative**: Description
79+
- Pros: ...
80+
- Cons: ...
81+
- Why rejected: ...
82+
validations:
83+
required: true
84+
85+
- type: textarea
86+
id: deprecation-changes
87+
attributes:
88+
label: Deprecation Changes Required for Previous Versions
89+
description: Describe deprecation notices, warnings, or shims that should be added to the current major version before this release
90+
placeholder: |
91+
- What deprecation warnings should be added to the current release?
92+
- What is the proposed deprecation timeline?
93+
- Are there compatibility shims or adapters to ease migration?
94+
validations:
95+
required: true
96+
97+
- type: textarea
98+
id: additional-context
99+
attributes:
100+
label: Additional Context
101+
description: Any other context, timeline considerations, or references
102+
placeholder: Additional information...
103+
validations:
104+
required: false

.github/hooks/pre-commit

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/sh
2+
3+
if hatch fmt --check; then
4+
echo "Hatch fmt check passed!"
5+
else
6+
hatch fmt
7+
echo "Error: hatch fmt modified your files. Please re-stage and commit again."
8+
exit 1
9+
fi

.github/scripts/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/usr/bin/env python3
2+
"""Verify built distributions include LICENSE and NOTICE files."""
3+
4+
from __future__ import annotations
5+
6+
import sys
7+
import tarfile
8+
import zipfile
9+
from pathlib import Path
10+
11+
12+
REQUIRED_BASENAMES = {"LICENSE", "NOTICE"}
13+
14+
15+
def list_archive_names(archive_path: Path) -> list[str]:
16+
if archive_path.suffix == ".whl":
17+
with zipfile.ZipFile(archive_path) as archive:
18+
return archive.namelist()
19+
20+
if archive_path.suffixes[-2:] == [".tar", ".gz"]:
21+
with tarfile.open(archive_path) as archive:
22+
return archive.getnames()
23+
24+
raise ValueError(f"Unsupported distribution type: {archive_path}")
25+
26+
27+
def verify_package(package_dir: Path) -> list[str]:
28+
dist_dir = package_dir / "dist"
29+
errors: list[str] = []
30+
31+
if not dist_dir.is_dir():
32+
return [f"{package_dir}: missing dist directory"]
33+
34+
archives = sorted(
35+
path
36+
for path in dist_dir.iterdir()
37+
if path.is_file()
38+
and (path.suffix == ".whl" or path.suffixes[-2:] == [".tar", ".gz"])
39+
)
40+
if not archives:
41+
return [f"{package_dir}: no built distributions found"]
42+
43+
for archive_path in archives:
44+
names = list_archive_names(archive_path)
45+
basenames = {Path(name).name for name in names}
46+
missing = sorted(REQUIRED_BASENAMES - basenames)
47+
if missing:
48+
errors.append(f"{archive_path}: missing {', '.join(missing)}")
49+
50+
return errors
51+
52+
53+
def main(argv: list[str]) -> int:
54+
if len(argv) < 2:
55+
print(
56+
"usage: check_dist_legal_files.py <package-dir> [<package-dir> ...]",
57+
file=sys.stderr,
58+
)
59+
return 2
60+
61+
errors: list[str] = []
62+
for arg in argv[1:]:
63+
errors.extend(verify_package(Path(arg)))
64+
65+
if errors:
66+
for error in errors:
67+
print(error, file=sys.stderr)
68+
return 1
69+
70+
for arg in argv[1:]:
71+
print(f"{arg}: LICENSE and NOTICE found in all distributions")
72+
return 0
73+
74+
75+
if __name__ == "__main__":
76+
raise SystemExit(main(sys.argv))

.github/scripts/ci-checks.sh

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
6+
cd "$REPO_ROOT"
7+
8+
# --- Core SDK checks ---
9+
echo "=========================================="
10+
echo "Running checks for aws-durable-execution-sdk-python"
11+
echo "=========================================="
12+
13+
hatch run dev-core:cov
14+
echo "SUCCESS: tests + coverage (core)"
15+
16+
hatch run dev-core:typecheck
17+
echo "SUCCESS: typings (core)"
18+
19+
# --- OTel SDK checks ---
20+
echo "=========================================="
21+
echo "Running checks for aws-durable-execution-sdk-python-otel"
22+
echo "=========================================="
23+
24+
hatch run dev-otel:cov
25+
echo "SUCCESS: tests + coverage (otel)"
26+
27+
hatch run dev-otel:typecheck
28+
echo "SUCCESS: typings (otel)"
29+
30+
# --- Examples checks ---
31+
echo "=========================================="
32+
echo "Running checks for examples"
33+
echo "=========================================="
34+
35+
hatch run dev-examples:test
36+
echo "SUCCESS: tests (examples)"
37+
38+
# --- Formatting / linting (per package) ---
39+
PACKAGES=(
40+
"packages/aws-durable-execution-sdk-python"
41+
"packages/aws-durable-execution-sdk-python-otel"
42+
"packages/aws-durable-execution-sdk-python-examples"
43+
)
44+
45+
for package_dir in "${PACKAGES[@]}"; do
46+
full_path="$REPO_ROOT/$package_dir"
47+
if [ -d "$full_path" ]; then
48+
echo "=========================================="
49+
echo "Running formatting/linting for $package_dir"
50+
echo "=========================================="
51+
cd "$full_path"
52+
hatch fmt
53+
echo "SUCCESS: linting/fmt ($package_dir)"
54+
else
55+
echo "WARNING: $package_dir does not exist, skipping fmt"
56+
fi
57+
done
58+
59+
cd "$REPO_ROOT"
60+
61+
# --- Commit message validation ---
62+
hatch run python .github/scripts/lintcommit.py

0 commit comments

Comments
 (0)