fastapi>=0.104.0
uvicorn[standard]>=0.24.0
sqlalchemy>=2.0.0
psycopg2-binary>=2.9.0
pydantic>=2.0.0
pydantic-settings>=2.0.0
email-validator>=2.0.0
python-multipart>=0.0.6
alembic>=1.12.0
networkx>=3.0.0
reportlab>=4.0.0
pillow>=10.0.0
s3dgraphy>=0.1.13

[all]
click>=8.1.0
rich>=13.0.0
inquirer>=3.0.0
flask>=3.0.0
flask-wtf>=1.2.0
wtforms>=3.1.0
jinja2>=3.1.0
flask-socketio>=5.3.0
python-socketio>=5.10.0
flask-babel>=3.1.0
babel>=2.12.0
matplotlib>=3.7.0
graphviz>=0.20.0
weasyprint>=60.0.0
python-magic>=0.4.0
moviepy>=1.0.0
pandas>=2.0.0
openpyxl>=3.1.0
python-docx>=1.0.0
passlib>=1.7.4
bcrypt<4.1.0,>=4.0.0
python-jose[cryptography]>=3.3.0
flask-login>=0.6.3

[auth]
passlib[bcrypt]>=1.7.4
python-jose[cryptography]>=3.3.0
flask-login>=0.6.3

[cli]
click>=8.1.0
rich>=13.0.0
inquirer>=3.0.0

[dev]
pytest>=7.0.0
pytest-asyncio>=0.21.0
pytest-cov>=4.0.0
httpx>=0.25.0
black>=23.0.0
flake8>=6.0.0
isort>=5.12.0
mypy>=1.0.0

[docs]
sphinx>=6.0.0
sphinx-rtd-theme>=1.2.0
myst-parser>=1.0.0

[export]
pandas>=2.0.0
openpyxl>=3.1.0
python-docx>=1.0.0

[gui]
pillow>=10.0.0

[harris]
matplotlib>=3.7.0
graphviz>=0.20.0

[media]
python-magic>=0.4.0
moviepy>=1.0.0

[pdf]
weasyprint>=60.0.0

[web]
flask>=3.0.0
flask-wtf>=1.2.0
wtforms>=3.1.0
jinja2>=3.1.0
flask-socketio>=5.3.0
python-socketio>=5.10.0
flask-babel>=3.1.0
babel>=2.12.0
passlib>=1.7.4
bcrypt<4.1.0,>=4.0.0
python-jose[cryptography]>=3.3.0
flask-login>=0.6.3
