# Python build / install
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
*.egg
MANIFEST

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

# Test / coverage
.pytest_cache/
.tmp_pytest/
.pytest_run_*/
.coverage
.coverage.*
htmlcov/
coverage.xml
*.cover

# IDE / OS / dev-tool caches
.vscode/
.idea/
.tmp/
.claude/
*.swp
*.swo
.DS_Store
Thumbs.db

# R session artifacts
.Rhistory
.RData
.Rapp.history
*.Rhistory

# Secrets — NEVER commit
.env
.env.*
*.pem
*.key
*credentials*
*secret*

# Local data caches (kept out of git; rebuildable)
tmp/
*.bak
*.preCSVupdate

# Working artifacts the user can regenerate
adm1_overlay_comparison_*.png
china_*.png
map.png
tmp_*.png
tmp_*.html
downloaded.shp
stderr.log

# Trace harness output (see scripts/trace_pipeline.py).  Artifacts
# are reproducible from the harness, so keep them local-only by
# default; use ``git add -f runs/<slug>/<file>`` to commit a
# specific run as PR evidence.
runs/

# Paper sources (large; managed separately)
Papers/
Papers_rebuilt/

# Project-private notes
CLAUDE.md

# Regenerated scratch stub (geopandas downloaded.shp probe)
downloaded.shp
