blinker>=1.4
click>=7.1.2
flask>=1.1.2
flask_babelex>=0.9.4
flask-wtf>=0.14.3
py-meta-utils>=0.7.8
pyterminalsize>=0.1.0
networkx>=2.4
werkzeug>=1.0.1
wtforms>=2.3.3
email-validator>=1.1.2

[admin]
flask-admin>=1.5.7

[api]
apispec<4,>=3.3.1
flask-marshmallow>=0.14.0
marshmallow>=3.9.1
marshmallow-sqlalchemy>=0.24.1

[asyncio]
quart>=0.13.1

[celery]
celery>=4.4.7
dill>=0.3.3

[dev]
coverage>=4.5.1
IPython>=7.16.0
pytest>=4.6.5
pytest-flask>=1.0.0
tox>=3.5.2

[docs]
IPython>=7.16.0
PyQt5>=5.15.1
qtconsole>=4.7.7
sphinx<3,>=2.4.4
sphinx-click>=1.4.0
sphinx-material>=0.0.32
m2r>=0.2.1

[graphene]
graphql-core<3,>=2.3.1
graphql-relay<3,>=2.0.1
graphql-server-core<2,>=1.2.0
flask-graphql>=2.0
graphene<3,>=2.1.8
graphene-sqlalchemy<3,>=2.2.2

[mail]
beautifulsoup4>=4.9.3
lxml>=4.6.1

[oauth]
Flask-OAuthlib>=0.9.5

[security]
bcrypt>=3.2.0
flask-login>=0.5.0
flask-principal>=0.4.0
itsdangerous>=1.1.0
passlib>=1.7.4

[session]
dill>=0.3.3
flask-session>=0.3.2

[sqlalchemy]
factory_boy>=2.11.1
flask-migrate>=2.5.3
flask-sqlalchemy-unchained>=0.7.3
sqlalchemy-unchained>=0.11.0
wtforms_sqlalchemy>=0.2
