# --- Python ---
__pycache__/
*.py[cod]
.venv/
venv/
*.egg-info/
build/
dist/
.mypy_cache/
.ruff_cache/
.pytest_cache/
# hypothesis writes a Unicode table and a constants cache here, whatever
# `settings(database=None)` says about the example database. It ships its own
# `.gitignore` inside the directory; this line is so a reader of *this* file
# knows what the directory is.
.hypothesis/
.coverage
.coverage.*
coverage.xml
htmlcov/

# --- Theurian derived artifacts -------------------------------------------
# Canonical state is rebuilt from Git-tracked migrations and content.
# Never commit any of these. See docs/adr/0004-sqlite-is-a-derived-artifact.md
.theurian/state/
.theurian/cache/
.theurian/runtime/
.theurian/generated/
*.sqlite
*.sqlite-wal
*.sqlite-shm

# --- Documentation site (derived) ---
# `mkdocs build` writes site/. The Pages workflow copies the logo into
# docs/assets/ before building, so anyone replicating that build locally
# creates it too; the tracked copy is assets/theurian-logo.svg.
#
# The workflow also fetches the mermaid bundle into docs/js/ before building.
#
# Every pattern in this section is anchored, unlike the older ones above, and
# the anchors matter here. An unanchored site/ would also ignore docs/site/,
# packages/*/site/ and tests/fixtures/site/. Naming the generated files rather
# than the directories docs/assets/ and docs/js/ leaves anything else added to
# them visible to git status — docs/js/ also holds tracked source.
/site/
/docs/assets/theurian-logo.svg
/docs/js/mermaid.min.js

# --- OS / editor ---
.DS_Store
.idea/
.vscode/
*.swp

# --- Local secrets ---
# Theurian's own token lives in ~/.theurian, never in a repo, but guard anyway.
.env
.env.*
!.env.example
*.token
