# --- Project-specific ---
working-notes/
# Scratch parse/benchmark runs. Tracked fixtures live in benchmark/input and
# benchmark/output/md, so only these throwaway locations are ignored.
scratch/
tmp/
out/
*.local.*

# --- Secrets / local config ---
.env
.env.*
!.env.example
*.pem
*.key
credentials.json
secrets.yaml
secrets.yml

# --- Python bytecode / build artifacts ---
__pycache__/
*.py[cod]
*$py.class
*.so
build/
dist/
sdist/
wheels/
develop-eggs/
eggs/
.eggs/
*.egg-info/
*.egg
MANIFEST
pip-wheel-metadata/
share/python-wheels/

# --- Virtual environments ---
.venv/
venv/
env/
ENV/
.uv/

# --- Testing / coverage / type checking ---
.pytest_cache/
.cache/
.tox/
.nox/
htmlcov/
.coverage
.coverage.*
coverage.xml
*.cover
nosetests.xml
.hypothesis/
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/
.ruff_cache/
.ty_cache/

# --- Notebooks ---
.ipynb_checkpoints/
profile_default/
ipython_config.py

# --- Docs ---
docs/_build/
site/

# --- Logs & databases ---
*.log
logs/
*.sqlite
*.sqlite3
*.db

# --- Editors / IDEs ---
.idea/
.vscode/
!.vscode/settings.json
!.vscode/extensions.json
*.swp
*.swo
*~
.spyderproject
.spyproject
.ropeproject

# --- OS cruft ---
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Thumbs.db
ehthumbs.db
Desktop.ini

# --- Agent config ---
.agents/
.claude/

# --- Local scratch ---
local/
sources/
working-notes/

# --- Pin Python: versioned on purpose, overrides the global ignore ---
!.python-version

# --- CI caches (UV_CACHE_DIR / PRE_COMMIT_HOME point here in .gitlab-ci.yml) ---
# Not just local hygiene: hatchling would otherwise pull them into the sdist,
# and a cached virtualenv carries absolute symlinks that break the build.
.uv-cache/
.pre-commit-cache/
