Our Chosen Toolchain: The cookiecutter-robust-python Stack¶
After extensively evaluating various tools against the established criteria (see Criteria) derived from the template’s philosophy (Template Philosophy), this document presents the curated set of recommended tools and practices that form the foundation of cookiecutter-robust-python.
This summary provides a concise overview of the chosen tool(s) for each defined topic area, the primary reason for their selection, and how they integrate into the overall workflow. For the detailed evaluations, including comparisons with alternative tools and specific criteria breakdowns, please refer to the individual Toolchain Topics pages.
Foundation Principles Reflected in Tooling:¶
Performance & Automation: Prioritizing fast, reliable execution for automated workflows.
Standards & Compatibility: Adhering to relevant PEPs and widely supported formats for broad interoperability.
Maintainability & Simplicity: Choosing tools that contribute to long-term project health through clarity and reduced complexity.
OS Interoperability: Core tools work seamlessly across Linux, macOS, and Windows.
The Integrated Workflow in Practice¶
The true power of this template lies in how these chosen tools work together cohesively. The workflow centers around:
Configuration: Defined primarily in
pyproject.tomland separate tool config files (01).Dependency/Environment Management: Handled efficiently by uv, creating standard virtual environments and managing packages based on
pyproject.tomlanduv.lock(02).Task Automation: Orchestrated by Nox, calling commands from other tools via
uv run(oruvx), providing the single interface for developers and CI/CD to run workflows (12).Code Quality & Testing: Ensured by Ruff (formatting/linting), Basedpyright (typing), pip-audit (dep security), and Bandit (code security), along with pytest/ for testing. These tools are installed via uv and executed via Task Automation (03-08, orchestrated by 12).
Packaging & Distribution: Artifacts created via uv build using selected backends, and published via uv publish, orchestrated by Task Automation (09-10).
Containerization: Defined by
Dockerfile, built by Docker/Podman (often viauvinstalling deps inside), orchestrated by Task Automation. Local multi-container setups managed by Docker Compose (11, 15).Automated Workflows: Triggered by CI/CD platforms (configured to call Task Automation commands), handling matrices, secrets, and reporting (13-14).
Development Environment: Consistent locally (uv venvs, pre-commit) and reproducibly within a container via Dev Containers (17), simplifying setup and ensuring uniformity.
By choosing cookiecutter-robust-python, users gain this pre-configured, integrated, and documented workflow, allowing them to focus on building their application with a strong, modern, and robust foundation.