__pycache__/
*.py[cod]
*.egg-info/
.eggs/
dist/
build/
.venv/
venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/
uv.lock
.env

# Raw (untrimmed) API responses saved while developing against live services -
# large and may contain more real-world detail than we want committed.
tests/fixtures/*_raw.json

# examples/crime_context/'s disk cache of real API responses - regenerated
# per force on demand, not meant to be committed.
examples/crime_context/cache/

# generated map output (run generate_map.py to produce your own) - not
# meant to be committed, same reasoning as the cache above.
examples/crime_context/*.html

# same reasoning, for the LSOA-level successor example.
examples/crime_context_lsoa/cache/
examples/crime_context_lsoa/*.html

# examples/nsg_terrain_drape/'s disk cache (OS Open USRN + OS Terrain 50
# bulk downloads, ~460MB combined) and generated drape HTML/STL output -
# regenerated on demand, not meant to be committed. The STL in particular
# can run to hundreds of MB for a real AOI - well past GitHub's 100MB
# per-file push limit, so this isn't just tidiness.
examples/nsg_terrain_drape/cache/
examples/nsg_terrain_drape/*.html
examples/nsg_terrain_drape/*.stl
