# Squid proxy CA key/cert (generated locally, never committed)
docker/squid/ca/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib64/
parts/
sdist/
var/
wheels/
!lib/wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
node_modules/

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
test-results.xml

# Translations
*.mo
*.pot

# Django stuff:
*.log
*.log.xz
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/
docs/_dev/

# Public API documentation build artifacts
public_docs/.build/
build/

# Public API documentation - auto-generated OpenAPI specs
public_docs/api/*/openapi.yml

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# celery beat schedule file
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.envrc
*.env
!override.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
.vars
.secrets
.direnv

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# additional
.DS_Store
.vscode/
.cursor/
.cursorrules
tmp/
lightning_logs/
outputs/
wandb/
qs1_tests/
data/datasets/FI-2010/
debug.ipynb
artifacts/
*.~undo-tree~
data/datasets/LOB-2021/
data/datasets/LOB-2022/
.aider*
data/*
!data/.gitkeep
playground/data/cache/*
playground/data/missing_minutes/results/*
# Shared local cache used by playground / docs / example scripts.
_cache/
# Legacy per-script caches (kept until pre-existing dirs are cleaned by hand).
playground/dev/source/_cache_*/
playground/dev/datamodule/_cache_*/
plots/*
scripts/plots/*
results/*
reports/*
experiments/benchmarks/
/run/
certs/
CLAUDE.md

# tmp
.tmp/
.tmp
playground/combined_output.csv
playground/WF_NFLX_2023-11-01_2023-12-31_1min_output.csv
gold_fx_partitions.csv
gold_fx_gaps.csv

# Containerization
docker-compose.override.yml
key*.json
docker/secrets/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
#  and can be added to the global gitignore or merged into this file.  For a more nuclear
#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

# Ruff stuff:
.ruff_cache/

# Rust, Cargo, maturin
target/
# Ignoring lock for libs:
Cargo.lock

# PyPI configuration file
.pypirc

# Ignore data files
*.parquet
*.zip
*.dbnrec
*.db
*.duckdb
*.wal
*.img.xz

# GitHub Actions
.actrc
*.pdf
.taskmaster/*

# All local maintainer / Obsidian / scratch material under docs/dev/ stays
# out of git (no per-subtree exceptions).
docs/dev/
docs/superpowers/

.cursor-plugin/*

# ai tools/MCP
.serena/*
# Trailing separator only, so this matches at ANY depth. The previous
# `.codemogger/*` had a separator in the middle, which anchors the pattern to
# the repo root — so a nested `docker/.codemogger/` slipped through and its
# SQLite index/WAL files were tracked.
.codemogger/
.cgcignore

# private area to store locals
playground/private/
playground/dev/datamodule/_cache_example_v2/*
.superpowers/

# Claude config ignored so per-issue/throwaway skills aren't pushed.
# Shared skills (.claude/skills/*) + opsx commands are already tracked and
# survive this ignore — edits to them still commit. To share a NEW skill,
# `git add -f`. settings.json stays local per team agreement.
.claude/

# Reconciliation run artifacts (signalq databento reconcile / the daily-metrics
# job). Data, not source: one JSON per day, read back by load_runs() to date the
# onset of a divergence. The CLI defaults under run/, but this catches a run
# started from anywhere else -- a stray one got committed that way once.
reconciliation-*.json

# Model checkpoints are artifacts, never source. The ensemble test phase used to
# write one into the working directory (see `ensemble_test_from_group`); it now
# uses a temp dir, and this is the backstop.
*.ckpt

# `signalq validate day` run output (per-date artifacts, shared reads, task cache).
# The Jenkins jobs produce this in a workspace they wipe; locally it is scratch.
validate_output/
