# .gitignore — grouped by origin, not by upstream-template order.
# Sections: project-local · tooling · Python · Node · Nix · generated artifacts.
# Keep new entries in the section they belong to; do not append at the bottom.
# NOTE: git only treats `#` as a comment at the START of a line — never put a
# trailing comment after a pattern, it becomes part of the pattern.

# ─────────────────────────── Project-local (never committed) ───────────────────────────
# PLAN.md: local planning scratch. MIGRATION_NOTES.md: hand-off channel for
# commands the user must run (CLAUDE.md rule). .mailmap: local identity-collapse
# map from the attribution work (ADR-0169/0170).
PLAN.md
MIGRATION_NOTES.md
.mailmap
testfails.txt
.local-review/

# ─────────────────────────── Editor / AI tooling state ───────────────────────────
# .omc/ = oh-my-claudecode local state.
.claude/
.omc/
.idea/
.spyderproject
.spyproject
.ropeproject
.ipynb_checkpoints
profile_default/
ipython_config.py

# ─────────────────────────── Python — bytecode & C extensions ───────────────────────────
__pycache__/
*.py[cod]
*$py.class
*.so
cython_debug/
*.sage.py

# ─────────────────────────── Python — build & packaging artifacts ───────────────────────────
# Root-scoped on purpose: an unanchored `lib/` also swallowed
# yadgar/core/static/lib (vendored viz JS + fonts) and needed four `!`
# negations to claw it back. /target/ is PyBuilder; *.manifest and *.spec are
# PyInstaller; __pypackages__/ is PEP 582.
.Python
/build/
/dist/
/downloads/
/eggs/
/lib/
/lib64/
/parts/
/sdist/
/var/
/wheels/
/target/
develop-eggs/
share/python-wheels/
.eggs/
*.egg
*.egg-info/
.installed.cfg
MANIFEST
*.manifest
*.spec
__pypackages__/
pip-log.txt
pip-delete-this-directory.txt

# ─────────────────────────── Python — environments ───────────────────────────
.env
.envrc.local
.direnv/
.venv
.venv-test/
env/
env.bak/
venv/
venv.bak/
ENV/

# ─────────────────────────── Python — lint, test, coverage & type-check caches ───────────────────────────
# mutants/ + .mutmut-cache = mutmut sandbox (ad-hoc dev tool). .ruff_cache/ and
# .import_linter_cache/ are written by the pre-commit hooks on every commit.
.ruff_cache/
.import_linter_cache/
.pytest_cache/
.cache
.hypothesis/
.tox/
.nox/
.coverage
.coverage.*
coverage.xml
htmlcov/
cover/
*.cover
*.py,cover
nosetests.xml
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/
mutants/
.mutmut-cache

# ─────────────────────────── Python — tool config that stays local ───────────────────────────
# Lockfiles (Pipfile.lock / poetry.lock / pdm.lock) are deliberately NOT ignored
# — commit them.
.pdm.toml
.pdm-python
.pdm-build/
celerybeat-schedule
celerybeat.pid

# ─────────────────────────── Web-framework leftovers (upstream template) ───────────────────────────
# Kept from github/gitignore's Python template. Yadgar uses none of these
# frameworks, but the patterns are harmless and *.log / db.sqlite3 are broadly
# useful. instance/ + .webassets-cache are Flask; .scrapy is Scrapy.
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
instance/
.webassets-cache
.scrapy

# ─────────────────────────── Node / JS ───────────────────────────
# Any node_modules (sdk-js/, viz-tests/, …) must never ship in the sdist.
node_modules/
sdk-js/dist/

# ─────────────────────────── Nix ───────────────────────────
result
result-*

# ─────────────────────────── Generated artifacts & datasets ───────────────────────────
# *.duckdb: `yadgar export duckdb` output. benchmarks/data/: download via
# .venv/bin/python -m benchmarks.run_longmemeval --retrieval-only.
# docs/diagrams/out/: regenerated by docs/diagrams/generate.py (see #68).
# /site is mkdocs, docs/_build/ is Sphinx, *.mo/*.pot are compiled translations.
*.duckdb
benchmarks/data/
benchmarks/reports/perf_loadtest_*.json
docs/diagrams/out/
docs/_build/
/site
*.mo
*.pot
