Skip to main content

Professional Python Project Companion

An opinionated guide to professional Python project infrastructure.

A professional Python project includes the configuration, conventions, automation, documentation, and validation that allow the project to be developed and maintained reliably.

This repository contains:

  • the source for the companion;
  • maintained canonical project files;
  • the rationale behind the selected infrastructure;
  • automated builds for web, EPUB, and PDF editions.
  • the PyPi pup package for updating infrastructure files

Guiding Principle

Professional Python projects deserve intentional infrastructure.

The specific tools will evolve. The engineering concerns they address will remain.

Canonical Examples

The canonical/ directory contains annotated examples of the project files discussed in the companion.

These examples represent one opinionated professional standard. Readers can fork the repository and adapt examples to their own requirements.

Install Tools

  1. Quarto CLI
  2. VS Code Editor
  3. VS Code Editor Quarto Extension
  4. Git
  5. uv Python manager

Build the Book

uv sync
quarto render

Outputs

The book can be rendered as:

  • an HTML website;
  • an EPUB;
  • a print-ready PDF.

Update a Repo based on Templates

# see what files the command would update (optional, force latest)
uvx pup-up
uvx pup-up@latest

# actually add and overwrite the files listed (CAUTION: DESTRUCTIVE)
uvx pup-up --write

Developer Command Reference

Show command reference

In a machine terminal

Open a machine terminal where you want the project:

git clone https://github.com/denisecase/pup-up

cd pup-up
code .

In a VS Code terminal

uv self update
uv python pin 3.14
uv lock --upgrade
uv sync --extra dev --extra docs

uvx pre-commit install
uvx pre-commit autoupdate

git add -A
uvx pre-commit run --all-files
# repeat if changes were made
uvx pre-commit run --all-files

# repo-specific
uv run pup-up
uv run pup-up --write

# types, tests, docs
uv run python -m pyright
uv run python -m pytest
uv run python -m zensical build

# save progress
git add -A
git commit -m "update"
git push -u origin main

License

The book text and canonical examples may use different licenses. See LICENSE and the licensing notes in the repository documentation.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pup_up-0.0.1.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pup_up-0.0.1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file pup_up-0.0.1.tar.gz.

File metadata

  • Download URL: pup_up-0.0.1.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pup_up-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a10418ecac91ae74a2219388b55998c4f41b674a880f5df77b84ec880d49c01f
MD5 c8f429b33f7ac9cd748e9393125caf32
BLAKE2b-256 1f803f7ab416dde23b17155103897e28420f2f30016bd67209aabd65b7de17aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pup_up-0.0.1.tar.gz:

Publisher: release-pypi.yml on denisecase/pup-up

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pup_up-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: pup_up-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pup_up-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5a77b458c557b5cf445c67666e91b29cc50a8a03944081b899ffd4ce7835bd38
MD5 53b5690c610ddd8e7bb6173f771aa740
BLAKE2b-256 feaabd735d1b3d8170b26ed33c9b3d5b975b07d41af6af872c935621b015dc86

See more details on using hashes here.

Provenance

The following attestation bundles were made for pup_up-0.0.1-py3-none-any.whl:

Publisher: release-pypi.yml on denisecase/pup-up

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page