# Byte-compiled / optimised / DLL files
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
build/
dist/
*.egg-info/
*.egg
wheels/
.installed.cfg
*.manifest
*.spec

# Virtual environments
.venv/
venv/
env/
ENV/

# Test / coverage / type-check caches
.pytest_cache/
.ruff_cache/
.mypy_cache/
.coverage
.coverage.*
htmlcov/
coverage.xml
*.cover
.tox/
.nox/

# Build / install metadata
pip-wheel-metadata/
.python-version

# Local environment / secrets
# Real credentials live in `.env`; `.env.example` is the committed template.
.env
!.env.example

# Spek runtime artefacts
# Generated inside any working directory the agent is run against.
# .spek/ at the repo root would be left over from a local `spek build` smoke
# test and is never something we want to commit. Specific project example
# workdirs are also ignored.
.spek/
/tmp-workdir/

# examples/weather-tool/ is the spek example; only SPEC.md is the human-authored
# input. Everything else in that directory (pyproject.toml, uv.lock, source,
# tests, .venv, dist, .spek, etc.) is regenerated by `spek build` and must not
# be committed — otherwise the example stops being a test of the agent and
# starts being a snapshot we'd have to maintain by hand.
/examples/weather-tool/*
!/examples/weather-tool/SPEC.md
