# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
venv/
.venv/
.venv*/
ENV/
env/

# Testing
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.hypothesis/
# mutmut's working copy, made by `doit mutate` at the repository root.
/mutants/

# Type checking and linting
.mypy_cache/
.ruff_cache/
.pytype/
.pyre/
.dmypy.json
dmypy.json

# IDEs
.idea/
*.swp
*.swo
*~
.DS_Store

# direnv
.direnv/
.envrc.local

# Per-user local state. `.claude/settings.local.json` was previously covered
# only by the maintainer's global ignore file, so a fresh clone by anyone else
# showed it as untracked. `.local/` is where `gh` writes its state dir when
# HOME is unset (see tests/test_statusline_agy.py).
.claude/settings.local.json
.local/

# Environment variables
.env
.env.*

# Temporary files
tmp/*
!tmp/.gitkeep
.cache/

# Git worktrees made by `doit worktree`. Not temporary: each lives until its PR merges.
# Anchored to the root, so a directory named `worktrees` elsewhere stays tracked (#860).
/worktrees/
# Claude Code's built-in worktree tool (EnterWorktree) creates worktrees here.
.claude/worktrees/

# Documentation
site/

# Build and packaging
*.whl
.uv-cache/
**/_version.py

# Project specific
*.log
# doit's dependency database; the filename depends on the dbm backend
# (dbm.sqlite3/dbm.gnu: .doit.db, dbm.ndbm: .doit.db.db, dbm.dumb: .doit.db.dat/.dir/.bak);
# the dbm.sqlite3 backend also leaves SQLite's WAL and shared-memory files (.doit.db-wal, .doit.db-shm)
.doit.db
.doit.db.*
.doit.db-*
coverage.xml
.nfs*
tools/hooks/ai/hook-debug.jsonl
out/

# AI agent user-local settings (keep shared settings.json tracked)
.claude/settings.local.json

# Per-user agent role overrides (CLI and model names are personal; see docs/development/ai/agent-roles.md)
/.config/pyproject_template/agents.local.toml

# Generated clients - keep directory structure but ignore version subdirectories
src/opnsense_openapi/generated/v*/

# Template sync artifacts
.template_commit
