# Python-generated files
__pycache__/
*.py[oc]
build/
dist/
wheels/
*.egg-info
*.egg

# Virtual environments
.venv
.env
.env.*

# Testing artifacts
.pytest_cache/
.hypothesis/
.coverage
htmlcov/
.tox/
.nox/

# Type checking / Linting caches
.mypy_cache/
.ruff_cache/

# uv caches
.uv-cache/
.uv_cache/

# Documentation build output
site/

# Development artifacts
.DS_Store
# Claude Code: ignore local state (settings, lock files, OS junk) but
# track contributor reference (PRD, JAX principles, variable naming
# review, implementation plans, agents, commands). Excluding via
# ``.claude/*`` (direct children only) instead of ``.claude/`` lets the
# negations below take effect — ``!`` cannot re-include children of an
# excluded parent directory. Future files under the unignored subdirs
# don't need ``git add -f``.
.claude/*
!.claude/agents/
!.claude/commands/
!.claude/docs/
*.zip

# IDE/Editor files
.vscode/
.idea/
*.swp
*.swo
*~

# Jupyter notebooks
.ipynb_checkpoints/

# Data files (typically large)
*.h5
*.hdf5
*.mat
*.npy
*.npz

# Generated calibration files
homography.yaml
calibration_*.yaml

# Log files
*.log
*.sh
*.mp4
examples/*.pdf
*.parquet
docs/presentation/trodestrack_presentation.pptx
