# Python bytecode
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
build/
dist/
*.egg-info/
*.egg

# Virtual environments
venv/
.venv/
pyvenv.cfg

# pytest
.pytest_cache/

# mypy
.mypy_cache/

# Coverage
htmlcov/
.coverage
.coverage.*
coverage.xml

# IDE
.idea/
.vscode/
*.swp
*.swo
.*.sw[a-z]
*~

# OS
.DS_Store
Thumbs.db

# Jupyter
.ipynb_checkpoints/

# Docs build output
docs/_build/

# Figures / matplotlib output
*.png
*.svg
*.pdf
*.eps

# pre-commit logs
pre-commit.log
#
TODO.md

# marimo session cache (auto-generated, not source)
__marimo__/
# large datasets (too big to track; ship separately)
/examples/data/large_datasets/
# local HTML renders of the notebooks (see examples/render_notebooks.sh)
/examples/rendered/
# my own things I do not want tracked
private/
# Atomic-write temp files from the Claude settings writer. .claude/ is
# tracked, so without this a snapshot taken mid-write sweeps one into a
# commit (it happened once).
.claude/*.tmp.*
# CI pip cache. PIP_CACHE_DIR points inside the project directory
# because GitLab can only cache paths under it, so the cache lands in
# the workspace and `reuse lint` would otherwise scan the wheels in it
# and report their licences as the project's own.
.cache/
