# Python Bytecode
__pycache__/
*.py[cod]
*$py.class

# Virtual Environment
venv/
.env/
.venv/
env/
ENV/
*.venv

# Development Tools
.idea/
.vscode/
*.swp
*.swo
*.swn
*.swm

# Testing and Coverage
htmlcov/
.tox/
.nox/
*.coverage
.coverage.*
.cache/
pytest_cache/
tests/__pycache__/
test-results/
coverage.xml
*.cover

# Logs and Temporary Files
*.log
*.tmp
*.temp
*.pid
*.bak
*.old
*.orig
*.rej

# Build Artifacts
build/
dist/
*.egg-info/
*.egg
.installed.cfg
eggs/
sdist/
wheels/
share/python-wheels/

# Type Checker Caches
.mypy_cache/
.dmypy.json
dmypy.json
.pytest_cache/
.ruff_cache/
.pyright/

# IDE Configurations
*.iml
*.sublime-project
*.sublime-workspace

# System Files
.DS_Store
Thumbs.db
desktop.ini

# Sensitive Data
.secret/
*.key
*.pem
.env
.env.*
!.env.example

tmp/
temp/

# uv (Python package manager)
.uv/
# uv.lock is COMMITTED for this repository. It is the shared kernel: its
# resolved dependency set is part of what a release tag means, and every one
# of the 18 consumers resolves `sahra-shared` from a git revision of this
# repo. An ignored lockfile made the release irreproducible, so it is tracked
# deliberately. Do not re-add it here.

# FastAPI / Alembic
alembic/versions/*.pyc

# Docker
*.env.docker
.dockerenv

# Local agent/tooling state. Agent worktrees must NEVER be committed.
# Note: the .claude/ rules already tracked in this repo stay tracked — gitignore
# does not untrack existing files. Use `git add -f` to add a new one on purpose.
.claude/
.claude/worktrees/
