feat: MVP implementation#6
Draft
markurtz wants to merge 2 commits into
Draft
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces an MVP foundation for rustarium by wiring up an initial public Python API surface (clients, schemas, CLI), adding a minimal Rust/PyO3 binding example, and replacing the project’s CI/docs/tooling scaffolding to support a multi-language (Python+Rust) workflow.
Changes:
- Added initial Python SDK modules (clients, schemas, exceptions), expanded package exports, and switched the CLI entrypoint to Typer.
- Introduced a Rust workspace (
rustarium-core) with a simple PyO3 extension example and matching Python type stubs/tests. - Migrated docs tooling (MkDocs → Zensical) and replaced legacy reusable workflows with a composite-action–based CI pipeline (quality/security/build/tests/docs/publish).
Reviewed changes
Copilot reviewed 100 out of 108 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
zensical.toml |
Adds Zensical site configuration and navigation. |
tests/README.md |
Updates testing guide for new Python test layout and hatch commands. |
tests/python/unit/test_version.py |
Adds unit tests for rustarium.version metadata exports. |
tests/python/unit/test_settings.py |
Updates a type-ignore annotation in Settings tests. |
tests/python/unit/test_logging.py |
Adds unit tests for logging configuration behavior. |
tests/python/unit/test_init.py |
Expands expectations for rustarium.__all__ exports. |
tests/python/unit/test_compat.py |
Adds a smoke test for optional dependency compatibility exports. |
tests/python/unit/__init__.py |
Declares the Python unit test package. |
tests/python/integration/test_integration.py |
Updates CLI invocation expectations and adds Rust binding import test. |
tests/python/integration/__init__.py |
Declares the Python integration test package. |
taplo.toml |
Adds Taplo TOML formatting include patterns. |
src/rustarium/schemas/updates.py |
Introduces Pydantic models for update-stream payloads. |
src/rustarium/schemas/config.py |
Introduces Pydantic configuration schemas for jobs/workloads/security/limits. |
src/rustarium/schemas/__init__.py |
Re-exports schema models as a public package surface. |
src/rustarium/logging.py |
Adjusts typing suppression on Loguru handler installation. |
src/rustarium/exceptions.py |
Adds a core exception hierarchy for the Python package. |
src/rustarium/compat.py |
Refactors optional OpenTelemetry import handling. |
src/rustarium/client.py |
Adds initial async/sync client skeletons for SDK usage. |
src/rustarium/_rust.pyi |
Adds Python typing stubs for the Rust extension module. |
src/rustarium/__main__.py |
Replaces Click-based CLI with a Typer-based CLI + subcommands. |
src/rustarium/__init__.py |
Expands public exports and adds a Rust-extension import fallback. |
scripts/generate_doc_tests.py |
Adds a script to generate pytest files from markdown via phmdoctest. |
scripts/check_links.py |
Adds a Typer CLI wrapper for urlchecker-based link validation. |
README.md |
Updates repo/tooling description (ty, Zensical, new test layout). |
mkdocs.yml |
Removes legacy MkDocs configuration. |
docs/stylesheets/extra.css |
Removes MkDocs-specific placeholder CSS. |
docs/scripts/macros.py |
Adds Zensical macro helpers for conditional includes and Rust API links. |
docs/scripts/gen_ref_pages.py |
Removes MkDocs gen-files reference page generator. |
docs/scripts/extra.js |
Removes MkDocs-specific placeholder JS. |
docs/reference/rust_coverage.md |
Adds Rust coverage placeholder page via macros. |
docs/reference/rust_api.md |
Adds Rust API placeholder page via macros. |
docs/reference/python_coverage.md |
Adds Python coverage placeholder page via macros. |
docs/reference/python_api.md |
Adds Python API reference directive entrypoint. |
docs/reference/index.md |
Updates reference landing page content and links. |
docs/reference/cli.md |
Adds CLI placeholder page via macros. |
docs/guides/repository-setup.md |
Removes template maintainer bootstrap guide. |
docs/guides/index.md |
Removes link to the deleted repository setup guide. |
docs/guides/github-workflows.md |
Updates workflow documentation for new commands/docs tooling. |
docs/getting-started/quickstart.md |
Updates quickstart commands and navigation links. |
Dockerfile |
Reworks container build to compile/build Python+Rust artifacts and install wheel in runtime stage. |
docker-compose.yml |
Simplifies compose config and restricts port binding to localhost. |
deny.toml |
Adds cargo-deny configuration for Rust dependency policy checks. |
cst.yaml |
Adds container-structure-test configuration for OCI validation. |
crates/rustarium-core/tests/test_integration.rs |
Adds a Rust integration test for the sum example. |
crates/rustarium-core/src/sum.rs |
Adds Rust sum example implementation + unit test. |
crates/rustarium-core/src/lib.rs |
Adds PyO3 module definition exporting the sum function. |
crates/rustarium-core/Cargo.toml |
Adds Rust crate manifest for rustarium-core. |
covgate.toml |
Adds coverage gating configuration (currently permissive). |
Cargo.toml |
Adds Rust workspace configuration and shared dependency versions. |
AGENTS.md |
Updates agent/developer guidance for new commands/docs/testing layout. |
.yamllint |
Adds repository yamllint configuration. |
.pre-commit-config.yaml |
Removes legacy pre-commit configuration. |
.gitignore |
Updates ignore rules (build outputs, docs/test generation, tool caches). |
.github/workflows/weekly.yml |
Removes legacy weekly pipeline workflow. |
.github/workflows/util-pr-comment.yml |
Adds workflow_run-based PR commenter for artifact-driven CI summaries. |
.github/workflows/util-development-cleanup.yml |
Updates PR docs-preview cleanup workflow to delete gh-pages paths via git. |
.github/workflows/release.yml |
Removes legacy release workflow. |
.github/workflows/pipeline-weekly.yml |
Adds new weekly pipeline using composite actions. |
.github/workflows/pipeline-release.yml |
Adds new release pipeline with build/test/docs/publish stages. |
.github/workflows/pipeline-nightly.yml |
Adds new nightly pipeline with change detection + publish steps. |
.github/workflows/pipeline-main.yml |
Adds new main-branch pipeline using composite actions. |
.github/workflows/pipeline-development.yml |
Adds new PR pipeline with conditional docs deployment and PR metadata artifacts. |
.github/workflows/nightly.yml |
Removes legacy nightly workflow. |
.github/workflows/main.yml |
Removes legacy main workflow. |
.github/workflows/development.yml |
Removes legacy development workflow. |
.github/workflows/_tests.yml |
Removes legacy reusable test workflow. |
.github/workflows/_security.yml |
Removes legacy reusable security workflow. |
.github/workflows/_quality.yml |
Removes legacy reusable quality workflow. |
.github/workflows/_pr_comment.yml |
Removes legacy PR commenter workflow. |
.github/workflows/_link-check.yml |
Removes legacy reusable link-check workflow. |
.github/workflows/_docs.yml |
Removes legacy reusable docs workflow. |
.github/workflows/_build_package.yml |
Removes legacy reusable build workflow. |
.github/workflows/_build_container.yml |
Removes legacy reusable container build workflow. |
.github/paths-filter.yml |
Adds centralized path filters for conditional workflow/action execution. |
.github/CODEOWNERS |
Updates ownership rules for Zensical config and removes pre-commit ownership entry. |
.github/actions/utility/setup-rust/action.yml |
Adds composite action to set up Rust + Python toolchain. |
.github/actions/utility/setup-python/action.yml |
Adds composite action to set up Python + install uv/hatch. |
.github/actions/rust/tests/action.yml |
Adds composite action to run Rust tests (optionally with coverage). |
.github/actions/rust/security/action.yml |
Adds composite action for cargo-audit/cargo-deny security checks. |
.github/actions/rust/quality/action.yml |
Adds composite action for Rust lint/type checks via hatch scripts. |
.github/actions/rust/publish/action.yml |
Adds placeholder composite action for Rust publish semantics. |
.github/actions/rust/build/action.yml |
Adds composite action to build the Rust workspace. |
.github/actions/python/tests/action.yml |
Adds composite action to run Python tests (unit/int/e2e) with optional coverage. |
.github/actions/python/security/action.yml |
Adds composite action to run Python security checks. |
.github/actions/python/quality/action.yml |
Adds composite action for Python lint/type checks via hatch scripts. |
.github/actions/python/publish/action.yml |
Adds composite action for PyPI publish + provenance attestation + optional GitHub release. |
.github/actions/python/build/action.yml |
Adds composite action to build Python wheel/sdist via hatch. |
.github/actions/project/tests/action.yml |
Adds composite action for doc tests (phmdoctest) and link-check E2E. |
.github/actions/project/security/action.yml |
Adds composite action for project security checks + actionlint + dependency review. |
.github/actions/project/quality/action.yml |
Adds composite action for repo-wide formatting/lint checks. |
.github/actions/project/publish/action.yml |
Adds placeholder composite action for project-level publishing. |
.github/actions/project/docs/action.yml |
Adds composite action to build/deploy Zensical docs to gh-pages (with optional coverage). |
.github/actions/oci/tests/action.yml |
Adds composite action for container structure tests. |
.github/actions/oci/security/action.yml |
Adds composite action for OCI security scans (dockle/trivy). |
.github/actions/oci/quality/action.yml |
Adds composite action for Docker/compose linting. |
.github/actions/oci/publish/action.yml |
Adds composite action to tag/push OCI images to GHCR. |
.github/actions/oci/build/action.yml |
Adds composite action to build OCI images and optionally export a tarball. |
.env.example |
Removes template environment example file. |
.editorconfig |
Removes legacy EditorConfig template file. |
.devcontainer/Dockerfile |
Adds devcontainer image including uv/hatch and Rust toolchain. |
.devcontainer/devcontainer.json |
Adds devcontainer configuration and VS Code customizations. |
.detect-secrets.scan.json |
Adds detect-secrets baseline configuration output. |
Comments suppressed due to low confidence (2)
tests/python/unit/test_settings.py:46
- The
# ty: ignore[...]directive is appended after a# type: ignore[...]on the same comment, which may preventtyfrom recognizing it (it’s no longer the leading directive in the comment). If this needs suppression forty, use a standalone# ty: ignore[...]comment (or keep only one ignore directive) so the configured type checker actually applies it.
.github/workflows/util-development-cleanup.yml:31 - This workflow now uses floating action tags (
actions/checkout@v4,actions/setup-python@v5) instead of pinning to a commit SHA. For supply-chain safety and consistency with the other workflows in this repo, pin these actions to a specific SHA (and optionally keep the version comment).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+9
to
+11
| | **Unit** | `tests/python/unit/` | Fast, isolated tests for individual functions and classes. These tests should not rely on external services or systems. | | ||
| | **Integration** | `tests/python/integration/` | Slower tests that verify interactions between multiple components or modules within the application. | | ||
| | **End-to-End** | `tests/e2e/` | Full-stack tests simulating real user workflows, from entry points to expected outcomes. | |
Comment on lines
+52
to
+56
| if default_config is not None: | ||
| _serialized_config = to_json(default_config, by_alias=True) # noqa: F841 | ||
|
|
||
| # Stubbed yield to satisfy the generator signature | ||
| yield cast("UpdatePayload", NotImplemented) |
Comment on lines
+93
to
+94
| # Stubbed yield to satisfy the generator signature | ||
| yield cast("UpdatePayload", NotImplemented) |
Comment on lines
17
to
20
| try: | ||
| from opentelemetry import ( | ||
| trace as _opentelemetry_trace, # type: ignore[import-not-found] | ||
| from opentelemetry import ( # type: ignore[import-not-found, unused-ignore] | ||
| trace as _opentelemetry_trace_mod, | ||
| ) |
Comment on lines
+22
to
+26
| /// Sums two integers and returns the result as a string. | ||
| #[pyfunction] | ||
| fn sum_as_string(a: usize, b: usize) -> PyResult<String> { | ||
| sum::sum_as_string_internal(a, b) | ||
| } |
Comment on lines
+19
to
+22
| /// Sums two integers and returns the result as a string. | ||
| pub fn sum_as_string_internal(a: usize, b: usize) -> PyResult<String> { | ||
| Ok((a + b).to_string()) | ||
| } |
Comment on lines
+31
to
+32
| pip install --break-system-packages --ignore-installed uv>=0.11.0 # Pin to latest stable/compatible uv | ||
| pip install --break-system-packages --ignore-installed hatch>=1.16.0 # Pin to latest stable/compatible hatch |
Contributor
CI Development Pipeline Status❌ Pipeline: Failed or was cancelled. Check logs |
Contributor
CI Development Pipeline Status❌ Pipeline: Failed or was cancelled. Check logs |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Type of Change
README.md,SUPPORT.md, docstrings, etc.)Test Plan
Related Issues
Screenshots / Visuals (if applicable)
Use of AI
Checklist
Important
Please review and complete this checklist before submitting your PR. This helps our maintainers process your contribution faster and ensures it meets the quality standards of
rustarium.rustarium.