Skip to content

[AAASM-1216] ✨ (pyproject): Add [runtime] extras and split [dependency-groups]#54

Merged
Chisanan232 merged 7 commits into
masterfrom
v0.0.1/AAASM-1216/config/pyproject_runtime_extras
May 23, 2026
Merged

[AAASM-1216] ✨ (pyproject): Add [runtime] extras and split [dependency-groups]#54
Chisanan232 merged 7 commits into
masterfrom
v0.0.1/AAASM-1216/config/pyproject_runtime_extras

Conversation

@Chisanan232
Copy link
Copy Markdown
Contributor

Description

Implements the pyproject design called out in Story AAASM-1202:

  1. New [project.optional-dependencies] — adds runtime = [] (marker extra for platform-wheel selection) and all = ["agent-assembly[runtime]"] (catch-all alias).
  2. PEP 735 [dependency-groups] split — introduces lint = [ruff, mypy] and test = [pytest, pytest-cov, pytest-rerunfailures, pytest-asyncio, pytest-benchmark] as first-class groups. dev and pre-commit-ci now source these via {include-group = ...} instead of duplicating package literals.
  3. uv.lock refreshed — manifest metadata only, no new external packages, same 84 resolved packages.

⚠️ Stacked on top of AAASM-1215 (PR #53). The first four commits in this PR are the same maturin build-backend switch from #53, cherry-picked so this branch builds standalone. They will drop out on rebase once #53 merges.

Type of Change

  • 🔧 Configuration

Breaking Changes

  • No

uv sync --group dev still resolves to the same package set as before. The default install (pip install agent-assembly) is unchanged. The new [runtime] extra is opt-in.

Related Issues

Testing

  • Manual testing performed

Validations:

  • python -c "import tomllib; tomllib.loads(open('pyproject.toml').read())" parses cleanly
  • uv lock --check — in sync after the refresh commit
  • uv sync --group dev --dry-run resolves
  • uv sync --group lint --dry-run resolves
  • uv sync --group test --dry-run resolves
  • Final extras: ['runtime', 'all']. Final groups: ['dev', 'lint', 'test', 'pre-commit-ci', 'docs'].

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Comments added for complex logic
  • Documentation updated if needed
  • All tests passing

Commits (this PR's scope only — AAASM-1216)

  1. ✨ (pyproject): Add [runtime] optional-dependency extra
  2. ✨ (pyproject): Add [all] optional-dependency aggregator
  3. ✨ (pyproject): Add [dependency-groups.lint] (ruff, mypy)
  4. ✨ (pyproject): Add [dependency-groups.test] (pytest+)
  5. ♻️ (pyproject): Slim [dependency-groups.dev] via include-group lint+test
  6. ♻️ (pyproject): Source mypy via include-group lint in [pre-commit-ci]
  7. 🔧 (uv): Refresh uv.lock for new [runtime]/[all] extras + lint/test groups

Marker extra that signals platform-wheel selection. The list is
empty by design — pip picks the platform-tagged wheel (which carries
the aasm sidecar at agent_assembly/bin/aasm), so no extra runtime
deps are needed.

`pip install agent-assembly` stays SDK-only.
`pip install agent-assembly[runtime]` opts into the bundled binary.

AAASM-1216
Convenience alias so users can type `pip install agent-assembly[all]`
to opt into runtime + any future extras (e.g. observability, dev
adapters) without having to enumerate them.

Currently equivalent to [runtime]; will accrete entries as more
extras are introduced.

AAASM-1216
PEP 735 grouping so contributors can install only the fast linters
(ruff + mypy) without the full test stack via
`uv sync --group lint`. Mirrors the F112 spec's example in AAASM-1202.

Tools are still in dev/pre-commit-ci groups — those are slimmed in
follow-up commits to dedupe via include-group.

AAASM-1216
PEP 735 grouping so CI/contributors can install only the test stack
(pytest, pytest-cov, pytest-rerunfailures, pytest-asyncio,
pytest-benchmark) via `uv sync --group test`. Mirrors the F112 spec's
example in AAASM-1202.

Tools are still in dev group — that's slimmed in the next commit
to dedupe via include-group.

AAASM-1216
The dev group now lists only dev-runtime tools that don't belong in
lint or test (coverage, python-dotenv, grpcio-tools), and pulls in
ruff/mypy/pytest+ transitively via PEP 735 include-group. This
removes the duplication that existed across dev and the new lint/test
groups added in the previous commits.

`uv sync --group dev` keeps resolving the same package set as before.

AAASM-1216
mypy now lives in the lint group; pre-commit-ci pulls it in
transitively via PEP 735 include-group. Removes the literal mypy
entry that duplicated the new lint group.

pre-commit hooks (pre-commit, pylint) keep running the same way —
the pre-commit-ci group still resolves to the same packages.

AAASM-1216
…oups

Re-resolved manifest after the previous commits added the
[project.optional-dependencies] runtime/all entries and the
lint/test dependency-groups. No new external packages — the lock
delta is purely metadata reorganization (group memberships).

AAASM-1216
@Chisanan232 Chisanan232 force-pushed the v0.0.1/AAASM-1216/config/pyproject_runtime_extras branch from d277f78 to 070cbe9 Compare May 23, 2026 04:03
@codecov
Copy link
Copy Markdown

codecov Bot commented May 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@sonarqubecloud
Copy link
Copy Markdown

@Chisanan232 Chisanan232 merged commit f18c99c into master May 23, 2026
23 checks passed
@Chisanan232 Chisanan232 deleted the v0.0.1/AAASM-1216/config/pyproject_runtime_extras branch May 23, 2026 04:54
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.

1 participant