# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
.venv/
venv/
env/
build/
dist/
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/

# IDE
.idea/
.vscode/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# PixCull artifacts
models/*.onnx
models/*.pt
models/*.bin
models/*.safetensors
output/
v0_output/
*.xmp.bak
*.sqlite
*.sqlite3
thumbs/

# v2.5 — the committed hermetic visual-smoke fixture run lives under an
# output/ dir (serve_demo._reload_run_from_disk requires that layout), so
# un-ignore just it (the broad output/ rule above would otherwise hide it).
!tests/fixtures/smoke_run/output/
!tests/fixtures/smoke_run/output/**

# Internal / not for public repo
MARKET_ANALYSIS_*.md
.claude/
*.local
*.notes.md

# Per-developer or runtime config — these should stay private even on a
# fork. The taxonomy and config defaults live in code; anything written
# at runtime (DeepSeek key, license token, sync paths) belongs in the
# user's app-data dir, not the repo.
.envrc
.env
.env.local
*.token

# Lr plugin packaged bundles
lr_plugin/*.zip
lr_plugin/*.lrtemplate

# Large generated artifacts
*.h5
*.npz
face_library*.npz
*.bak

# P-PRO-4.2 — wedding-moment eval output (contains real photographer
# filenames; goldenset CSV is a local artifact, not a public dataset)
out_wedding_eval/
predictions*.csv

# Swift Package Manager build cache (generated by `swift build` /
# Xcode); large + machine-specific.  Don't commit.
mobile/PixCullCompanion/.build/
out_wedding_eval/realdemo01_smoke/
goldenset/v0.11/_eval_output/
goldenset/v0.11/training.csv

# modelscope upload cache (transient)
docs/screenshots/.ms_upload_cache

# v2.14 — local labeling sheets (may contain real photo filenames; keep private)
label_sheet*.csv

# v2.19 — local wheel build output
dist_wheel/

# v2.32 — cross-run library index: records REAL absolute photo paths,
# private to the machine. Never commit; it lives in ~/.pixcull/library/
# but guard against a stray local copy too.
library/
vectors.npy
manifest.jsonl
