httpx[http2]<1,>=0.28.1
beautifulsoup4<5,>=4.12
lxml<7,>=5.2

[:python_version < "3.11"]
cssselect<2,>=1.5.0

[:python_version >= "3.11"]
cssselect<2,>=1.6.0

[all]
curl_cffi<1,>=0.9
playwright<2,>=1.60.0
pydantic<3,>=2.14.1

[camoufox]
camoufox[geoip]<1,>=0.5.8

[captcha]
ddddocr<2,>=1.6.1
numpy<3,>=2.2.6

[crypto]
pycryptodome<5,>=4.0.1

[dev]
pytest<10,>=9.1.1
pytest-cov<8,>=7.1.0
pytest-asyncio<2,>=1.4.0
ruff<0.18,>=0.17.1
mypy<3,>=2.4.0
types-beautifulsoup4<5,>=4.12.0.20250516
pydantic<3,>=2.14.1

[docs]
mkdocs<2,>=1.6.1
mkdocs-material<10,>=9.7.7
mkdocstrings[python]<2,>=1.0.8

[mcp]
mcp<3,>=2.3.0
camoufox[geoip]<1,>=0.5.8
pydantic<3,>=2.14.1

[visual]
Pillow<13,>=12.3.0
