Skip to content

feat(sdk): monorepo repository to add new otel plugin package#397

Open
SilanHe wants to merge 17 commits into
mainfrom
feat/add-otel-package
Open

feat(sdk): monorepo repository to add new otel plugin package#397
SilanHe wants to merge 17 commits into
mainfrom
feat/add-otel-package

Conversation

@SilanHe
Copy link
Copy Markdown
Contributor

@SilanHe SilanHe commented May 22, 2026

Issue #, if available:

Description of changes:

Monorepo Restructure

The repo was converted from a single-package layout to a monorepo with a packages/ directory:

  • Core SDK moved from the repo root (src/, tests/, examples/, pyproject.toml) into packages/aws-durable-execution-sdk-python/
  • All source, tests, and examples were relocated (no content changes, just path moves)
  • I moved all hatch env "testing" scripts to the root pyproject.toml and only left the build/publishing artifacts in the per package pyproject.toml. Working environments are defined in root pyproject.toml.

New Package: OpenTelemetry Instrumentation

A new package was added at packages/aws-durable-execution-sdk-python-otel/ (v0.1.0):

CI & Workflow Updates

  • ci.yml — Loops over all packages/*/ directories for format checks, type checking, tests, and builds
  • ci-checks.sh — Iterates over a PACKAGES array instead of running checks at the repo root
  • pypi-publish.yml — Uses a matrix strategy to build and publish each package independently; per-package artifact names
  • sync-package.yml — Deleted (no longer needed)
  • deploy-examples.yml / integration-tests.yml — Minor path adjustments

Documentation

File Change
CONTRIBUTING.md Updated with monorepo structure overview; instructions to cd into package dirs before running hatch
RELEASING.md (new) Release process: per-package versioning, tagging convention (sdk-vX.Y.Z, otel-vX.Y.Z), PyPI publishing flow, release notes format, pre-publish checklist
Core SDK README.md (new) Package-level README inside the moved package directory

Misc

  • .gitignore — Relaxed example build/zip patterns from root-anchored to relative (works with nested layout)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@SilanHe SilanHe force-pushed the feat/add-otel-package branch from 3b74d87 to 7bded69 Compare May 22, 2026 21:06
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't actually tested this one but it looks quite reasonable. I had to work a little more closely with AI on this one.

@SilanHe SilanHe marked this pull request as ready for review May 25, 2026 21:17
Comment thread packages/aws-durable-execution-sdk-python/.coverage
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread RELEASING.md

- **SDK only:** `sdk-v<version>` (e.g., `sdk-v1.6.0`)
- **OTel only:** `otel-v<version>` (e.g., `otel-v0.3.0`)
- **Both packages in a single release:** comma-separate the sub-tags (e.g., `sdk-1.6.0,otel-0.3.0`)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This wouldn't be practically doable when we have more packages (e.g. testing, etc) in this repo and we want to release all of them. And also the version dependency becomes less obvious, e.g. otel-0.3.0 requires sdk-1.6.0+ and a future version otel-0.4.0 requires sdk-1.7.0+.

Copy link
Copy Markdown
Contributor Author

@SilanHe SilanHe May 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the tags, this is the best approach we've got. At the moment, with the number of packages we have this is currently doable. We can re-evaluate if we exceed tag size limits. We can always only bump and release one package at a time.

For the dependency tree, the source of truth should be the pyproject.toml for the package.

Comment thread packages/aws-durable-execution-sdk-python-examples/pyproject.toml
Comment thread packages/aws-durable-execution-sdk-python-examples/pyproject.toml Outdated
@zhongkechen
Copy link
Copy Markdown
Contributor

linting and tests failed.

@SilanHe
Copy link
Copy Markdown
Contributor Author

SilanHe commented May 28, 2026

linting and tests failed.

Ah sorry, I was still working through the different worklows, there was an issue with a workflow which would check out the testing sdk into the root. Then the root testing scripts would pick up the testing sdk pyproject.toml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants