dist/
.coverage
__pycache__/
*.pyc
.pytest_cache/

# Local editor/agent scratch. `.claude/launch.json` names an absolute path on one
# machine, so it is configuration for a workstation rather than for the project.
.claude/

# Secrets never belong in a repository, and this one is Apache-2.0 and public: a commit
# here is a disclosure, not a mistake to be fixed by a later commit. Listed even though
# nothing in this repo reads a `.env`, because the rule has to exist *before* the file
# does — an ignore added after `git add -A` protects nothing.
.env
.env.*
!.env.example

# Finder writes one of these into any directory it is asked to display, so they arrive
# without anyone editing anything, in whichever directory somebody happened to open. No
# slash, so this matches at every depth rather than only at the root. Listed here for the
# same reason as the line above even though none has appeared yet: this repository is
# public, and a stray binary file in a release tarball is a question every reader has to
# stop and answer.
.DS_Store

# Where working files live: a script somebody ran by hand, a captured response, a harness
# that reproduces the bug being chased. Kept, but never committed. It exists because the
# alternatives both fail — a temporary directory is deleted without warning, which is what
# temporary means, and an untracked file at the root is one the next `git add -A` commits.
# Leading slash, so it means this one directory and cannot also match a `local/` somewhere
# under `memvara/`: hatchling builds the sdist from what VCS does not ignore, so a pattern
# matching at every depth is a pattern that can quietly drop files out of a release. See
# `pyproject.toml`'s note on `artifacts` for the same thread, pulled the other way.
/local/
