joblib>=1.2
matplotlib>=3.6
nbformat>=5.9
numpy>=1.23
openpyxl>=3.0
pandas>=1.5
psutil>=5.9
rich>=14.0
scikit-learn>=1.2
scipy>=1.9
seaborn>=0.12
xlrd>=2

[all]
faiss-cpu>=1.8
fastapi>=0.111
kafka-python-ng>=2.2
lightgbm>=4
litellm>=1
llvmlite>=0.43
numba>=0.60
opentelemetry-api>=1.24
peft>=0.10
pillow>=10
prometheus-client>=0.20
pyarrow>=16
python-dotenv>=1
shap<0.52,>=0.42
sqlalchemy>=2
torch>=2
tqdm>=4.66
transformers>=4.40
umap-learn>=0.5
uvicorn>=0.30
xgboost>=2

[analytics]
umap-learn>=0.5

[boosting]
lightgbm>=4
xgboost>=2

[dev]
pytest>=8

[explain]
llvmlite>=0.43
numba>=0.60
shap<0.52,>=0.42

[images]
peft>=0.10
pillow>=10
torch>=2
tqdm>=4.66
transformers>=4.40

[llm]
litellm>=1
python-dotenv>=1

[memory]
faiss-cpu>=1.8

[monitoring]
prometheus-client>=0.20
opentelemetry-api>=1.24

[serve]
fastapi>=0.111
uvicorn>=0.30

[streaming]
kafka-python-ng>=2.2
pyarrow>=16
sqlalchemy>=2

[vision]
peft>=0.10
pillow>=10
torch>=2
tqdm>=4.66
transformers>=4.40
