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

# Distribution / packaging
.Python
build/
dist/
sdist/
wheels/
*.egg-info/
*.egg
MANIFEST
pip-wheel-metadata/

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

# Testing / coverage
.tox/
.nox/
.coverage
.coverage.*
htmlcov/
.cache
.pytest_cache/
nosetests.xml
coverage.xml
*.cover
.hypothesis/

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/

# Linting
.ruff_cache/

# Jupyter
.ipynb_checkpoints
*.ipynb

# IDE / editor
.idea/
.vscode/
*.swp
*.swo
*~
.DS_Store
Thumbs.db

# OS
.directory

# Project-specific: never commit images/cache
*.jpg
*.jpeg
*.png
*.gif
*.bmp
*.tiff
*.webp
*.heic
!docs/images/*.jpg
!docs/images/*.png
!tests/fixtures/*.png
hq_cache/
*.npz
*_cache/

# Downloadable demo assets — reproducible via docs/assets/MANIFEST.json
# (MANIFEST.json itself is committed; downloaded images are not.)
docs/assets/paintings/
docs/assets/tiles/
docs/assets/bench_outputs/

# Output directories
output/
out/
results/
mosaic_*.jpg
mosaic_*.png

# Logs
*.log

# Local config
.env.local
config.local.*
