numpy>=1.24
pandas>=2.0
anndata>=0.10
scipy>=1.10
scanpy>=1.10
geopandas>=0.14
shapely>=2.0
pillow>=9.0
tifffile>=2022.0
matplotlib>=3.7
pyyaml>=6.0
jinja2>=3.1
pydantic<3,>=2.6
langgraph<2,>=1.0
langchain<2,>=1.0
langchain-core<2,>=1.0
langchain-openai<2,>=1.0
langchain-anthropic<2,>=1.0
langchain-google-genai>=2.0
langgraph-checkpoint-sqlite>=2.0
starlette>=0.40
uvicorn>=0.30
sse-starlette>=2.0
python-multipart>=0.0.9
nbformat>=5.9

[bench]
jsonschema>=4
tabulate>=0.9

[dev]
pytest>=8
pytest-timeout>=2.3
hypothesis>=6.100
ruff>=0.5
httpx>=0.27
anyio>=4

[loop]
deepagents<0.8,>=0.7.13

[research]
tavily-python>=0.5

[skills]
squidpy>=1.2
esda>=2.4.0
gseapy>=1.0
liana
cellphonedb<6.0,>=5.0
plotnine>=0.12
harmonypy>=0.0.9
bbknn>=1.5.0
scanorama>=1.7.0
scvi-tools<2.0,>=1.0
tangram-sc>=1.0.0
qpsolvers[osqp]>=4.0
ray>=2.0
flashdeconv>=0.1.0
cell2location>=0.1.4
palantir>=1.0.0
NaiveDE>=0.1
SpatialDE>=1.1
scikit-misc>=0.5
igraph<1.0,>=0.9
torch>=2.0
SpaGCN>=1.2.5
GraphST>=1.1.0
paste-bio>=1.0.0
POT<0.9.5,>=0.9.0
plotly>=5
pynrrd>=1.0
