All things foobar.
| Path | Description |
|---|---|
tests/ |
Pytest-based test suite scaffolding (currently contains a placeholder test). |
Makefile |
Convenience targets for installing dependencies and running quality checks. |
pyproject.toml |
Project metadata, dependency definitions, and console script configuration. |
uv.lock |
Lockfile generated by uv pinning all resolved dependencies. |
uv, which manages virtual environments and dependencies.
uv is the only requirement to run the code in this project. Follow the
installation instructions to set up uv
locally. For example, on macOS or Linux, you can use
curl -LsSf https://astral.sh/uv/install.sh | shExecute the console scripts listed in pyproject.toml directly through uv:
uv run exampleYou can also drop into an interactive shell with the same environment using
uv run ipython (or the make repl shortcut).
- Implement your changes under
src/(remember to add type hints—mypyis part of the default quality gate). - Add or update unit tests under
tests/. - Run the quality checks before committing.
The repository provides two ways to run the checks:
-
Using Makefile shortcuts (recommended):
make lint # Ruff, docformatter, pylint, bandit, yamllint make typecheck # mypy make test # pytest
-
Using raw
uvcommands:uv run ruff check uv run mypy src tests uv run pytest
For a one-stop option, make check runs lint, typecheck, and test in
sequence, and make fix applies the auto-formatting steps (Ruff formatter and
Docformatter) before re-running Ruff with --fix.
- Formatting: Ruff (PEP 8-compatible) plus Docformatter for docstrings.
- Static analysis: Ruff for linting, Pylint for additional checks, Bandit for security scanning, and Yamllint for YAML validation.
- Typing: Mypy enforces type hints across
src/andtests/. - Testing: Pytest is configured, with Hypothesis and Coverage already available as dev dependencies should property-based testing or coverage reports be needed.
uvdocumentation for detailed instructions on managing environments, running commands, and publishing packages.- Pytest documentation for writing tests.
- Ruff documentation for linting and formatting configuration.