# === Python ===
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
*.egg-info/
*.egg
dist/
build/
.eggs/
htmlcov/
.coverage
.coverage.*
.cache
.pytest_cache/
.hypothesis/
.tox/
.nox/
.mypy_cache/
.ruff_cache/
.dmypy.json
dmypy.json

# === Virtual environments ===
venv/
.venv/
env/
ENV/
.env
.env.*
!.env.example

# === uv ===
.uv/

# === Node / TypeScript ===
node_modules/
.npm
.yarn
.pnp.*
*.tsbuildinfo
.next/
.nuxt/
.turbo/
.svelte-kit/
out/

# === IDE ===
.vscode/
!.vscode/settings.json.example
!.vscode/extensions.json
.idea/
*.swp
*.swo
*~
.DS_Store
Thumbs.db

# === Logs ===
*.log
logs/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# === Secrets (절대 커밋 금지) ===
.env.local
.env.*.local
secrets.yaml
secrets.json
*.pem
*.key
!packaging/*/key.pub  # 공개키만 OK

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

# === Operational ===
data/
storage/
*.db
*.sqlite
*.sqlite3
docker-volumes/

# === SBOM 산출물은 docs/audits/에 커밋 (gitignore 안 함) ===

# === Project-specific ===
/scratch/
/tmp/
*.local.*
