Skip to content

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

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

feat(sdk): monorepo repository to add new otel plugin package#397
SilanHe wants to merge 3 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)

New Package: OpenTelemetry Instrumentation

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

File Purpose
pyproject.toml Hatch-based build config; depends on core SDK ≥1.5.0, opentelemetry-api ≥1.20.0, opentelemetry-sdk ≥1.20.0
__init__.py Placeholder module (exports __version__ only, no instrumentation logic yet)
README.md Documents the intended API (instrument_durable_execution()) and features
tests/ Empty test directory
py.typed PEP 561 marker

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
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.

What's in this file?

# SPDX-FileCopyrightText: 2025-present Amazon.com, Inc. or its affiliates.
#
# SPDX-License-Identifier: Apache-2.0
__version__ = "0.1.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.

Should we start with the same version as the SDK?

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.

examples worth its own package. We can do this later.

Comment thread .github/workflows/ci.yml
- name: Run tests + coverage
run: hatch run test:cov
run: |
for pkg in packages/*/; do
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.

Does the order matter when running tests/build?

Comment thread .github/workflows/ci.yml
if [ -f "$pkg/pyproject.toml" ]; then
echo "=== Building: $pkg ==="
cd "$pkg"
hatch build
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.

how does this build rely on a local version of the other package instead of a version from pypi?

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