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

# C extensions
*.so

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

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

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

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

# 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/

# PyBuilder
.pybuilder/
target/

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

# IPython
profile_default/
ipython_config.py

# pyenv
#   For a library or package, you should ignore these files since the code is
#   intended to run in multiple environments
.python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# poetry
#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
#   This is especially recommended for binary packages to ensure reproducibility, and is more
#   commonly ignored for libraries.
#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
#   in version control.
#   https://pdm.fming.dev/#use-with-ide
.pdm.toml

# uv
#   For libraries/packages, lock files are typically excluded
#   For applications, you might want to include uv.lock
uv.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

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

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
#  be added to the global gitignore or merged into this project gitignore.
#  For PyCharm Community Edition, use 'PyCharm CE' instead of 'PyCharm'.
.idea/

# Visual Studio Code
.vscode/
*.code-workspace

# Vim
*.swp
*.swo
*~

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

# Sublime Text
*.sublime-project
*.sublime-workspace

# Data files (common extensions) - but allow examples and config
*.csv
*.tsv
*.xlsx
*.xls
*.dat
*.h5
*.hdf5
*.nc
*.netcdf
*.pickle
*.pkl
*.parquet
*.feather
*.arrow
*.sqlite
*.db
*.sql
*.xml
*.ovr

# Allow specific example and config files
!examples/data/*
!config/*.json
!config/*.yaml
!config/*.yml
!tests/fixtures/*.json
!requirements*.txt
!pyproject.toml
!setup.py
!docker-compose.yml
!.github/**/*.yml
!.github/**/*.yaml
!docs/**/*.txt
!*.md

# Geospatial data files
*.shp
*.shx
*.dbf
*.prj
*.cpg
*.qpj
*.geojson
*.kml
*.kmz
*.gpx
*.gdb/

# Image files
!log.png
*.png
*.jpg
*.jpeg
*.gif
*.bmp
*.tiff
*.tif
*.svg
*.ico
*.webp

# Video files
*.mp4
*.avi
*.mov
*.wmv
*.flv
*.webm
*.mkv

# Audio files
*.mp3
*.wav
*.ogg
*.m4a
*.aac
*.flac

# Archive files
*.zip
*.tar
*.tar.gz
*.tgz
*.tar.bz2
*.tbz2
*.tar.xz
*.txz
*.rar
*.7z

# Temporary files
*.tmp
*.temp
*.bak
*.backup
*.old
*.orig
*.rej
*~

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
desktop.ini

# Folder config file
[Dd]esktop.ini

# Microsoft Office temporary files
~$*

# Model files and checkpoints
*.model
*.weights
*.h5
*.pb
*.ckpt
*.pth
*.pt
*.bin
*.safetensors
checkpoints/
models/
trained_models/
saved_models/

# Configuration files with secrets
*secret*
*password*
*key*
*.pem
*.p12
*.pfx
config/production.yaml
config/staging.yaml
.env.*
!.env.example

# Output directories
output/
outputs/
results/
plots/
figures/
reports/
exports/

# Cache directories
.cache/
cache/
tmp/
temp/

# Log files
*.log
logs/

# Profiling data
.prof
*.prof

# Memory dumps
*.dump
*.dmp

# Node.js (if using any JS tools)
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# R (if using R)
.Rhistory
.RData
.Ruserdata

# MATLAB
*.asv
*.m~

# LaTeX
*.aux
*.fdb_latexmk
*.fls
*.synctex.gz
*.toc
*.out
*.bbl
*.blg

# Example data and sample files (keep templates but not actual data)
examples/data/*
!examples/data/.gitkeep
!examples/data/README.md
sample_data/
test_data/
example_outputs/

# Documentation build
docs/build/
docs/_build/
site/

# Development and testing artifacts
.coverage
htmlcov/
.pytest_cache/
.tox/
.nox/

# Package build artifacts
build/
dist/
*.egg-info/

# Ignore any personal notes or development files
notes.txt
todo.txt
scratch.py
test_*.py
debug_*.py
experimental/
playground/

# Docker
.dockerignore

# Kubernetes
*.yaml
*.yml
!docker-compose.yml
!pyproject.toml
!setup.py
!requirements*.txt
!config/*template*
!config/default*
!.github/

# Ignore large data directories entirely
data/
datasets/
raw_data/
processed_data/
