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

# C extensions
*.so

# Distribution / packaging
.Python
.python-version
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
*.whl
*.tar.gz

# PyInstaller
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
junit/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
test-results/
test-reports/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/
docs/_static/
docs/_templates/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints
*.ipynb
!examples/*.ipynb  # Allow example notebooks

# IPython
profile_default/
ipython_config.py

# pyenv
# .python-version

# pipenv
# Pipfile.lock

# uv
# uv.lock (committed for reproducible builds)

# Prevent blob files from being committed
blob_*.json

# pdm
.pdm.toml

# PEP 582
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
.env.local
.env.production
.env.test
.env.development
.venv*/
venv*/
virtualenv/
.virtualenv/

# IDE and Editor settings
.idea/
*.iml
*.ipr
*.iws
.vscode/
*.code-workspace
*.sublime-project
*.sublime-workspace
.spyderproject
.spyproject
.ropeproject

# Vim
*.swp
*.swo
*~

# Emacs
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# Windows
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
*.tmp
*.temp
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msix
*.msm
*.msp
*.lnk

# Linux
.fuse_hidden*
.directory
.Trash-*
.nfs*

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Type checkers
.pytype/
.pyre/

# Cython debug symbols
cython_debug/

# Performance profiling
*.prof
*.stats

# Database files
*.db
*.sqlite
*.sqlite3

# Logs
*.log
logs/

# Project-specific
srs-files/

# Generated protobuf files are committed, so don't ignore them
# *.pb.py
# *_pb2.py
# *_pb2_grpc.py

# Test files - we want to commit these!
!examples/test_*.py
!examples/demo_*.py
!examples/debug_*.py
!examples/check_*.py
!tests/test_*.py

# But do ignore temporary test outputs in root
/test_*.py
/debug_*.py
/temp_*.py
/tmp_*.py
/scratch_*.py

# Temporary files
*.bak
*.backup
*.orig

# Configuration files with secrets
config.ini
secrets.json
private_key.txt
credentials.json

# Private keys and credentials
*.pem
*.key

# Local development
.local/
local/
scratch/
playground/

# Node.js (if any frontend tools are used)
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Docker
.dockerignore
Dockerfile.dev

# Terraform
*.tfstate
*.tfstate.*
.terraform/
.terraform.lock.hcl
