python-conventions
Python code conventions covering type hints, Ruff formatting/linting, mypy/pyright, pytest, async I/O, uv packaging, and dependency security scanning. Load when writing or reviewing Python code.
SKILL.mdinternal/builtins/languages/python/skills/python-conventions/SKILL.md
GitHub- Python 3.10+, type hints on all public APIs, avoid
Any— use precise types, generics, ortyping.Protocol. - Formatting/linting: a fast linter/formatter (e.g., Ruff), zero warnings; strict static type checking (e.g., mypy or pyright). Security: a SAST tool (e.g., Bandit).
- Testing:
pytestwith function-based tests,pytest-cov(80%+),hypothesisfor property-based. - Error handling: specific exceptions only, never bare
except:,contextlib.suppressfor intentional ignoring. - Dataclasses or Pydantic for structured data — avoid raw dicts for known schemas.
pathlib.Pathoveros.pathfor filesystem operations. Google-style docstrings on public APIs.- Async:
async/awaitfor I/O, never mix blocking and async,asyncio.gather()for concurrency. - Package management: a fast, lockfile-based package manager (e.g., uv) with the lockfile committed, build with a PEP 517 backend (e.g., maturin or hatchling).
- Security:
pip-auditfor dependency CVE scanning. Zero tolerance for critical/high vulnerabilities. - Logging: structured logging (key=value / JSON) — never f-strings in log calls.
- Pattern matching (
match/case) for multi-branch type dispatch (3.10+). - Anti-patterns: mutable default args,
import *, global state,time.sleepin async.