python-dotenv>=1.0
pyyaml>=6.0
structlog>=24.0
nanoid>=2.0
rich>=13.7

[admin]
pf-core[tracking,web]

[anthropic]
anthropic>=0.30

[articles]
trafilatura>=1.6
htmldate>=1.7
tenacity>=8.0

[cli]
typer>=0.12
click>=8.0

[crawl]
pf-core[articles,http]

[db]
sqlalchemy>=2.0
alembic>=1.13

[dev]
pytest>=8.0
httpx>=0.27
factory-boy>=3.3
ruff>=0.6
pre-commit>=3.5

[eval]
pf-core[jobs,tracking]

[full]
pf-core[db]
pf-core[web]
pf-core[llm]
pf-core[cli]
pf-core[jobs]
pf-core[tracking]
pf-core[admin]
pf-core[eval]
pf-core[redis]
pf-core[ratelimit]
pf-core[jsonschema]

[http]
httpx>=0.27

[image-phash]
ImageHash>=4.3
Pillow>=10.0

[jobs]
pf-core[cli,db]
pydantic>=2.0

[jsonschema]
jsonschema>=4.0

[llm]
pf-core[http,validate]
tenacity>=8.0

[mysql]
pymysql>=1.1

[postgres]
psycopg[binary]>=3.2

[ratelimit]
pf-core[web]
slowapi>=0.1.9

[redis]
dogpile.cache>=1.3
redis>=5.0

[test-containers]
testcontainers[mysql]>=4.0

[tracking]
pf-core[db,llm]

[validate]
json-repair>=0.40
pydantic>=2.0

[web]
fastapi>=0.115
jinja2>=3.1
uvicorn[standard]>=0.30
