# ---- Python ----
__pycache__/
*.py[cod]
*$py.class
*.so
.Python

# ---- Virtual environments ----
.venv/
venv/
env/
.env
.env.*
!.env.example

# ---- Build / packaging artifacts ----
build/
dist/
*.egg-info/
.eggs/

# ---- Test / lint / type caches ----
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.cache/

# ---- IDE / OS noise ----
.idea/
.vscode/
.DS_Store
Thumbs.db

# ---- PennyTune: generated data, caches, outputs (NEVER commit) ----
# Downloaded vendor data and the local DuckDB/Parquet cache must never be
# committed (non-redistribution posture; secrets and data stay out of the repo).
results/
outputs/
data/
cache/
.pennytune/

# Local DuckDB / SQLite cache + app-state databases.
*.duckdb
*.duckdb.wal
*.db

# ---- Secrets / local config (never commit) ----
# The EDGAR identity (name + email) lives in a local config and is not a
# secret, but a user's local config is still kept out of the repo.
config.toml
pennytune.toml
*.secret
credentials.*
# Extra env files (.env.example is still allowed back in, above).
*.env
# PyPI upload credentials.
.pypirc

# NOTE: uv.lock IS committed (the supply-chain source of truth) —
# do not add it here.
