2525# This creates .venv, installs dependencies, and sets up pre-commit hooks
2626make init
2727
28- # Use a different Python version if needed (default is python3.10)
29- BASE_PYTHON=python3.14 make init
30-
31- # Offline mode (uses cached packages only)
32- OFFLINE=1 make init
33-
3428# Activate the virtual environment
3529source .venv/bin/activate
3630```
@@ -39,42 +33,42 @@ source .venv/bin/activate
3933
4034``` bash
4135# Run all test suites (unit + e2e + cicd_utils)
42- tox -m tests
36+ uvx tox -m tests
4337
4438# Run a specific test suite
45- tox -e tests-unit # Unit tests with coverage
46- tox -e tests-e2e # End-to-end tests
47- tox -e tests-cicd_utils # CI/CD utilities tests
39+ uvx tox -e tests-unit # Unit tests with coverage
40+ uvx tox -e tests-e2e # End-to-end tests
41+ uvx tox -e tests-cicd_utils # CI/CD utilities tests
4842
4943# Run pytest directly with custom options
50- tox -e pytest -- tests/unit/test_init.py --no-cov
51- tox -e pytest -- -k " test_specific_function" --no-cov
44+ uvx tox -e pytest -- tests/unit/test_init.py --no-cov
45+ uvx tox -e pytest -- -k " test_specific_function" --no-cov
5246```
5347
5448### Linting and Formatting
5549
5650``` bash
5751# Run the main static checks
58- tox -m static-quick
52+ uvx tox -m static-quick
5953
6054# Run the entire suite of static checks (incl. all pre-commit hooks)
6155# If running from the main branch, you'll need
6256# to skip the 'no-commit-to-branch' check with:
63- SKIP=' no-commit-to-branch' tox -m static
57+ SKIP=' no-commit-to-branch' uvx tox -m static
6458
6559# Run specific pre-commit hooks
66- pre-commit run ruff --all-files
67- pre-commit run ruff-format --all-files
60+ uvx pre-commit run ruff --all-files
61+ uvx pre-commit run ruff-format --all-files
6862
6963# Run type checking with pyright only
70- tox -e typing
64+ uvx tox -e typing
7165```
7266
7367### Documentation
7468
7569``` bash
7670# Build static documentation
77- tox -e docs-static
71+ uvx tox -e docs-static
7872```
7973
8074## Project Map
@@ -207,14 +201,9 @@ def _coerce_to_densities(...):
207201## Testing Notes
208202
209203- Use ` --no-cov ` flag during development for faster test runs
210- - Run targeted tests via: ` tox -e pytest -- tests/unit/test_foo.py -k "test_bar" --no-cov `
204+ - Run targeted tests via: ` uvx tox -e pytest -- tests/unit/test_foo.py -k "test_bar" --no-cov`
211205- The ` tests/e2e/artifacts/ ` directory contains expected Plotly Figure JSON for e2e tests
212206
213- ## Agent Skills
214-
215- Agent skills live under ` skills/ ` . For Python version support changes, follow
216- ` skills/dropping-and-or-adding-support-for-python-versions/SKILL.md ` .
217-
218207## CI/CD Pipeline
219208
220209GitHub Actions runs tests on Python 3.10–3.14 across Ubuntu, macOS, and Windows.
@@ -224,8 +213,8 @@ Codecov minimums are 98% overall and 100% diff coverage for new code.
224213
2252141 . Run tests after changes when feasible, starting with the smallest relevant
226215 subset.
227- 2 . Run ` tox -e typing ` if types are touched or errors are likely.
228- 3 . Run ` pre-commit run ruff-format --all-files ` to format code.
216+ 2 . Run ` uvx tox -e typing` if types are touched or errors are likely.
217+ 3 . Run ` uvx pre-commit run ruff-format --all-files` to format code.
2292184 . Preserve deprecation behavior and public API stability.
2302195 . Keep changes minimal and aligned with existing patterns.
2312206 . Respect existing patterns - this is a mature codebase with consistent style.
0 commit comments