# Python bytecode and native extensions
__pycache__/
*.py[cod]
*$py.class
*.pyd

# C extensions
*.so

# Build, packaging, and release output
.Python
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
!packaging/*.spec
*.app/
*.AppImage
*.dmg
*.exe
installer-output/
packaging/media/

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

# Profiling data
.prof

# Generated Fixtures — only auto-generated subdirs; permanent .avv fixtures are tracked
tests/fixtures/videos/
tests/fixtures/signals/
tests/fixtures/openephys_mock/
tests/fixtures/sample_session/
tests/fixtures_first_run/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# Environments
.env
.env.*
!.env.example
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# IDEs
.idea/
.vscode/
*.code-workspace

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

# Ruff / Linting
.ruff_cache/

# AvialSync specific based on AGENTS.md
*.avv
!tests/fixtures/*.avv
*.avialcache/
.tmp_avialcache_*/

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

# Documentation generated by Sphinx / Read the Docs
docs/_build/

# Local release tooling and credentials
.pypirc
.release/

# Console captures from a local run. One of these was committed once as a stale
# UTF-16 capture of a failing suite; nothing should reach the tree this way.
pytest_out.txt

# User raw data directories.
# Recording sessions are named HH-MM-SS by the acquisition rig, so the pattern
# covers tomorrow's session too — listing them one by one only protects the ones
# someone remembered to add.
TENSS26_Anzal/
[0-2][0-9]-[0-5][0-9]-[0-5][0-9]/
09-37-33/
09-35-24/
