Files
python-patterns/README.md
T
2026-06-01 21:42:05 +00:00

2.4 KiB

Python Patterns

Prescriptive. Follow these when writing Python code.

This repo captures reusable Python patterns extracted from mature upstream codebases, then turns them into concise guidance with citations.

A good pattern doc here includes:

  • Why — the reasoning, not just the rule
  • When to use — the trigger conditions
  • When NOT to use — where the pattern causes harm
  • Preferred shapes — examples of the intended form
  • Counterexamples — what to avoid and why
  • Source citations — verified file:line anchors from real codebases

These docs should be derived from what strong Python codebases actually do, not from generic style-blog advice.

Structure

  • patterns/ — what to do
  • smells/ — what to avoid
  • sources/ — extracted source-study notes and upstream references
  • PROCESS.md — the repeatable extraction/refinement workflow used to build this repo

Current source base

Primary upstreams mined so far:

  • python/cpython
  • encode/httpx
  • pytest-dev/pytest
  • pydantic/pydantic
  • python-attrs/attrs
  • pallets/click
  • sqlalchemy/sqlalchemy

Why this mix works:

  • CPython: API boundaries, exceptions, context managers, typing surface design
  • HTTPX: package facade design, sync/async split, transport seams, error taxonomy
  • pytest: fixture lifetime, parametrization, test ergonomics
  • Pydantic: validation and serialization boundaries
  • attrs: lightweight value-object/data-model patterns
  • Click: CLI-facing exception and public-surface patterns
  • SQLAlchemy: explicit persistence/session lifetime and sync-vs-async caveats

Current pattern set

  • patterns/module-design.md
  • patterns/typing.md
  • patterns/error-handling.md
  • patterns/async-boundaries.md
  • patterns/testing.md
  • patterns/data-models.md
  • smells/common-mistakes.md

Reviewing this repo

Recommended review order:

  1. README.md
  2. PROCESS.md
  3. sources/*.md for evidence quality
  4. patterns/*.md for synthesis quality
  5. smells/*.md for anti-pattern coverage

Questions to ask during review:

  • Is each claim grounded in repeated upstream evidence?
  • Are caveats preserved instead of flattened away?
  • Does the pattern stay at the Python level rather than drifting into framework guidance?
  • Are citations specific enough to be re-checked quickly?

Extraction rule

Do not write pattern docs from memory. First collect repeated source examples with file:line citations, then synthesize the rule.