pandas<3.0,>=1.3.0
alembic>=0.7.7
bcolz-zipline>=1.2.6
bottleneck>=1.0.0
click>=4.0.0
empyrical-reloaded>=0.5.7
h5py>=2.7.1
intervaltree>=2.1.0
iso3166>=2.1.1
iso4217>=1.6.20180829
lru-dict>=1.1.4
multipledispatch>=0.6.0
networkx>=2.0
patsy>=0.4.0
python-dateutil>=2.4.2
pytz>=2018.5
requests>=2.9.1
scipy>=0.17.1
six>=1.10.0
sqlalchemy>=2
statsmodels>=0.6.1
tables>=3.4.3
toolz>=0.8.2
exchange-calendars>=4.2.4
polars>=1.0
pyarrow>=18.0
structlog
pydantic>=2.0
pyyaml>=6.0
ccxt>=4.0.0
yfinance>=0.2.0
apscheduler>=3.0
ib-insync>=0.9.86
aiohttp>=3.9.0
websockets>=14.0
pybit>=5.0.0
hyperliquid-python-sdk>=0.1.0
cryptography>=41.0.0
eth-account>=0.10.0
rich>=14.1.0
plotly>=5.0
tqdm>=4.65
ipywidgets>=8.0
nest-asyncio>=1.5
seaborn>=0.13.0
jinja2>=3.0.0
eventkit

[:python_version == "3.12"]
numpy<2.0,>=1.26.0
numexpr<2.10,>=2.8.0

[:python_version >= "3.13"]
numpy>=2.1
numexpr>=2.10

[benchmarks]
pytest-benchmark>=3.4.1
memory_profiler>=0.61.0
snakeviz>=2.2.0
matplotlib>=3.5.0

[dev]
pre-commit>=2.12.1
Cython>=0.29.21
ruff>=0.11.12
mypy>=1.10.0
black>=24.1
hypothesis>=6.0
jupyter>=1.0.0
jupyterlab>=4.0.0
ipython>=8.0.0
types-requests>=2.31.0
types-pytz>=2024.1.0
types-PyYAML>=6.0.12
pandas-stubs>=2.0.0
sqlalchemy-stubs>=0.4
types-python-dateutil>=2.8.19
types-networkx>=3.0
types-seaborn>=0.13.0

[docs]
Cython
mkdocs>=1.5.0
mkdocs-material>=9.5.0
mkdocstrings[python]>=0.24.0
mkdocs-autorefs>=0.5.0
Sphinx>=1.3.2
numpydoc>=0.5.0
sphinx-autobuild>=0.6.0
pydata-sphinx-theme
sphinx_markdown_tables
m2r2

[optimization]
scikit-learn>=1.3.0
scikit-optimize>=0.9.0
deap>=1.4.0
matplotlib>=3.5.0
tqdm>=4.0.0
psutil>=5.0.0

[optimization:extra == "ray"]
ray[default]>=2.0.0

[test]
tox
pytest>=7.2.0
pytest-cov>=3.0.0
pytest-xdist>=2.5.0
pytest-timeout>=1.4.2
pytest-asyncio>=0.21.0
parameterized>=0.6.1
testfixtures>=4.1.2
flake8>=3.9.1
matplotlib>=1.5.3
responses>=0.9.0
freezegun>=1.2.0
pandas-datareader>=0.2.1
click
coverage
pytest-rerunfailures
Cython<3.2.0,>=0.29.21
pytest-benchmark>=5.1.0
hypothesis>=6.0
