pydantic>=2.6
pydantic-settings>=2.2
SQLAlchemy>=2.0
pyyaml>=6.0
numpy>=1.26
pandas>=2.2
pyarrow>=16
duckdb>=1.0
duckdb-engine>=0.17
matplotlib>=3.8

[all]
seaborn>=0.13
plotly>=5.20
scipy>=1.13
scikit-learn>=1.4
jinja2>=3.1
pylatexenc>=2.10
arbolab-linescale>=0.1
arbolab-treeqinetic>=0.1
arbolab-treecablecalc>=0.1
arbolab-treemotion>=0.1
arbolab-wind>=0.1
requests
beautifulsoup4
pyserial>=3.5

[dev]
pytest>=8
pytest-cov>=4.1
ruff>=0.4
black>=24.0
mypy>=1.10
flake8>=7.0

[latex]
jinja2>=3.1
pylatexenc>=2.10

[linescale]
arbolab-linescale>=0.1
pyserial>=3.5

[ml]
scipy>=1.13
scikit-learn>=1.4

[plot]
seaborn>=0.13
plotly>=5.20

[treecablecalc]
arbolab-treecablecalc>=0.1
pyserial>=3.5

[treemotion]
arbolab-treemotion>=0.1
pyserial>=3.5

[treeqinetic]
arbolab-treeqinetic>=0.1
pyserial>=3.5

[wind]
arbolab-wind>=0.1
requests
beautifulsoup4
pyserial>=3.5
