aiohttp>=3.14.3
beautifulsoup4>=4.12
lxml>=4.9.2
html2text>=2024.2.26
pydantic>=2.5
pandas>=2.0
pyarrow>=14
tqdm>=4.66
python-dateutil>=2.8

[all]
echr-py[analysis,citations,convenience,embeddings-faiss,embeddings-local,exec-docs,gui,llm,llm-anthropic,llm-openai,mcp,ocr,research-agent,scrape]

[analysis]
scipy>=1.11.1
scikit-learn>=1.3
networkx>=3.2

[citations]
pypdf>=6.15

[convenience]
openpyxl>=3.1

[dev]
pytest>=8
pytest-asyncio>=0.23
pytest-mock>=3.12
pillow>=10
ruff>=0.4
mypy>=1.8
types-beautifulsoup4
PyYAML>=6
jsonschema>=4.21
numpy>=1.26

[embeddings]
numpy>=1.26

[embeddings-faiss]
echr-py[embeddings]
faiss-cpu>=1.8

[embeddings-local]
echr-py[embeddings]
sentence-transformers>=3

[exec-docs]
pymupdf>=1.24
pymupdf4llm>=0.0.17
markitdown[docx,pdf]>=0.1

[gui]
streamlit>=1.30

[llm]
google-genai>=1.0

[llm-anthropic]
anthropic>=0.40

[llm-openai]
openai>=1.55.3

[mcp]
mcp<2,>=1.29

[ocr]
mistralai>=1.12

[research-agent]
PyYAML>=6
jsonschema>=4.21

[scrape]
playwright>=1.40
