# Lean CLI / local development
# NOTE: the correct PyPI name is "lean", not "lean-cli" - "lean-cli" and the
# formerly-listed "qcalgorithm" do not exist on PyPI at all (confirmed via
# PyPI's JSON API: both 404). Neither is needed to run `pytest` (main.py has
# no direct unit tests - it requires AlgorithmImports/Lean, which no test
# file imports), so this was never caught until a truly clean install was
# attempted (CI, or a fresh machine) rather than an existing dev venv.
lean>=1.0.225

# Dashboard / optional local exploration
plotly>=5.17.0

# Development
pytest>=7.4.0
black>=23.0.0

# Parallel test execution (`aq test --parallel`, opt-in only - off by
# default, since multiple workers each importing torch is a real OOM risk
# on memory-constrained dev machines)
pytest-xdist>=3.5.0

# In-process Redis mock for tests (V2-13)
fakeredis>=2.20.0

# PostgreSQL driver for test imports — connection is mocked in tests (V2-14)
psycopg[binary]>=3.1

# Yahoo Finance historical data backfill (V2-19.5) — dev/offline-script only,
# never in requirements.txt/requirements-runtime.txt since it never runs
# inside Lean or any always-on worker container
yfinance>=0.2.40

# Interactive Brokers historical futures/options backfill
# (data_pipeline/ib_backfill.py, `aq fetch futures`/`aq fetch options`) —
# dev/offline-script only, same "never inside Lean or any always-on worker
# container" convention as yfinance above. Deferred-imported, so the rest
# of the CLI/test suite works with this package absent as long as
# phase_v2.ib.enabled stays false (the default).
ib_insync>=0.9.86

# README backtest-chart generation (generate_backtest_report.py, called by
# `aq backtest`) — dev/local-script only, never inside Lean or any Docker image
matplotlib>=3.8.0

# Build-time only, for the OPTIONAL cpp_inference_ext/ accelerator
# (inference/exported_model.py's _linear_batched() - see
# development/Problems.md #32). Never required at runtime -
# inference/exported_model.py deferred-imports the compiled extension and
# falls back to the NumPy path when it's absent/unbuilt, same convention
# as ib_insync above. Building the extension itself also needs a C++
# compiler (MSVC on Windows), which this file can't install for you - see
# cpp_inference_ext/README.md.
pybind11>=2.10
