COE-231: Bootstrap repository, tooling, and package skeleton#3
COE-231: Bootstrap repository, tooling, and package skeleton#3
Conversation
…skeleton - Add uv-managed pyproject.toml with ruff, mypy, pytest tooling - Create src/stackperf package with 5 core modules (api, benchmark_core, cli, collectors, reporting) - Add tests skeleton with import smoke tests - Add Makefile with lint, type-check, test, and quality commands - Include uv.lock for reproducible dependencies - All quality checks pass Closes COE-231
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c9589c654c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Makefile
Outdated
| uv sync --all-extras | ||
|
|
||
| sync: ## Sync dependencies with uv | ||
| uv sync |
There was a problem hiding this comment.
Install dev extras in the
sync target
ruff, mypy, pytest, and pytest-cov are declared under [project.optional-dependencies].dev, but this target runs plain uv sync. I checked uv sync --help, which only installs optional dependencies when --extra/--all-extras is passed, and uv sync --dry-run on this tree shows it would install only stackperf. On any fresh checkout, make sync therefore leaves the environment without the quality tools, so make lint, make type-check, and make test will either fail or pick up unrelated global binaries instead of the locked versions.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
This issue has been addressed in this commit. The sync target now uses uv sync --all-extras which installs the dev extras including ruff, mypy, pytest, and pytest-cov. Fresh checkouts will have all quality tools available.
- Makefile: sync now includes --all-extras for dev tools - pyproject.toml: added hatchling to dev dependencies - This ensures fresh checkouts have all tools available and offline builds work correctly with locked dependencies
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b92e3ee7a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| lint: ## Run linting with ruff | ||
| uv run ruff check src tests |
There was a problem hiding this comment.
Pass dev extras to the
uv run quality targets
I checked uv run --help: optional dependencies are only included when --extra or --all-extras is passed. Here ruff, mypy, pytest, and pytest-cov are declared only under [project.optional-dependencies].dev in pyproject.toml, so make lint, make type-check, make test, and make test-cov are not self-contained on a fresh checkout unless the operator happened to run make sync first. In that state these targets will either fail or pick up unrelated global binaries instead of the locked toolchain.
Useful? React with 👍 / 👎.
| install: ## Install dependencies with uv | ||
| uv sync --all-extras | ||
|
|
||
| sync: ## Sync dependencies with uv (includes dev extras) | ||
| uv sync --all-extras |
There was a problem hiding this comment.
Freeze the lockfile in the bootstrap targets
I checked uv sync --help and uv run --help: --locked/--frozen are the switches that stop uv.lock from being updated. Because these bootstrap commands use plain uv sync and the quality targets use plain uv run, running make install, make sync, or a quality gate after a dependency edit can silently re-resolve and rewrite the checked-in lockfile instead of failing fast. That undermines the reproducibility goal of committing uv.lock and can leave read-only commands with a dirty worktree.
Useful? React with 👍 / 👎.
Closes COE-231
Summary
Create the foundational repository structure with Python tooling, package layout, and development workflow.
Deliverables
Validation
All quality checks pass:
make lint→ ruff check passesmake type-check→ mypy strict passesmake test→ 6/6 pytest tests passmake quality→ all gates pass