# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
build/
dist/

# Environments
.venv/
venv/

# Tooling caches
.pytest_cache/
.pytest-*/
.ruff_cache/
.ty_cache/
.mypy_cache/
.coverage
coverage.xml
htmlcov/
test-results/

# uv
uv.lock.bak
.uv-cache/

# Locally generated release and validation artifacts. These directories
# hold built wheels and sdists; several are created by tooling that drops
# its own `*` .gitignore inside them, which only protects the repository
# for as long as that file survives. Name them here as well, so a
# hand-recreated directory cannot commit distributions.
.artifacts/
.dist-test/
.release-validation/

# Editors / OS
.idea/
.vscode/
.DS_Store
Thumbs.db

# Hypothesis writes a constants cache here. It ships its own .gitignore,
# but relying on a generated file to keep generated data out of the tree is
# not a control. The property lanes set database=None, so nothing here is
# evidence: discovered failures are pinned as @example instead.
.hypothesis/

# Supply-chain evidence a release run produces inside the workspace, and that
# SECURITY.md tells a maintainer to produce locally. Untracked, they would
# make the `repository-clean` release gate report a dirty tree for doing
# exactly what the release procedure asks. The reviewed copies are the CI
# artifacts, not files in the checkout.
/runtime-requirements.txt
/pip-audit.json
/sbom/
