#
# This file is autogenerated by pip-compile with python 3.7
# To update, run:
#
#    pip-compile
#
activitystream==0.3.0
    # via -r requirements.in
beaker==1.11.0
    # via -r requirements.in
beautifulsoup4==4.10.0
    # via
    #   -r requirements.in
    #   webtest
bleach==4.1.0
    # via pypeline
cchardet==2.1.7
    # via -r requirements.in
certifi==2021.5.30
    # via requests
cffi==1.14.6
    # via cryptography
charset-normalizer==2.0.4
    # via requests
colander==1.8.3
    # via -r requirements.in
crank==0.8.1
    # via turbogears2
creoleparser==0.7.5
    # via pypeline
cryptography==35.0.0
    # via -r requirements.in
datadiff==2.0.0
    # via -r requirements.in
decorator==5.1.0
    # via -r requirements.in
docutils==0.17.1
    # via pypeline
easywidgets==0.3.6
    # via -r requirements.in
emoji==1.5.0
    # via -r requirements.in
feedgenerator==2.0.0
    # via -r requirements.in
feedparser==6.0.8
    # via -r requirements.in
formencode==2.0.1
    # via
    #   -r requirements.in
    #   easywidgets
future==0.17.1
    # via timermiddleware
genshi==0.7.3
    # via creoleparser
gitdb==4.0.7
    # via gitpython
gitpython==3.1.18
    # via -r requirements.in
gunicorn==20.1.0
    # via -r requirements.in
html5lib==1.1
    # via
    #   -r requirements.in
    #   pypeline
    #   textile
httplib2==0.19.0
    # via oauth2
idna==3.2
    # via requests
inflection==0.5.1
    # via profanityfilter
iso8601==0.1.16
    # via colander
jinja2==3.0.2
    # via -r requirements.in
markdown==2.6.11
    # via
    #   -r requirements.in
    #   markdown-checklist
    #   pypeline
markdown-checklist==0.4.1
    # via -r requirements.in
markupsafe==2.0.1
    # via
    #   -r requirements.in
    #   easywidgets
    #   jinja2
    #   turbogears2
    #   webhelpers2
ming==0.11.2
    # via -r requirements.in
mock==3.0.5
    # via -r requirements.in
https://github.com/joestump/python-oauth2/archive/b94f69b1ad195513547924e380d9265133e995fa.zip#egg=oauth2
    # via -r requirements.in
oauthlib==3.0.2
    # via requests-oauthlib
packaging==21.0
    # via bleach
paginate==0.5.6
    # via -r requirements.in
paste==3.5.0
    # via
    #   -r requirements.in
    #   easywidgets
    #   pastescript
pastedeploy==2.0.1
    # via
    #   -r requirements.in
    #   pastescript
pastescript==3.1.0
    # via -r requirements.in
pillow==8.3.2 ; python_version < "3.7"
    # via -r requirements.in
pillow==9.0.0 ; python_version >= "3.7"
    # via -r requirements.in
profanityfilter==2.0.6
    # via -r requirements.in
pycparser==2.20
    # via cffi
pyflakes==2.1.1
    # via -r requirements.in
pygments==2.9.0
    # via -r requirements.in
pymongo==3.11.4
    # via
    #   -r requirements.in
    #   activitystream
    #   ming
pyparsing==2.4.7
    # via
    #   httplib2
    #   packaging
pypeline[creole,markdown,rst,textile]==0.5.3
    # via -r requirements.in
pysolr==3.9.0
    # via -r requirements.in
python-dateutil==2.8.0
    # via
    #   -r requirements.in
    #   easywidgets
python-magic==0.4.24
    # via -r requirements.in
python-oembed==0.2.4
    # via -r requirements.in
pytz==2021.3
    # via
    #   -r requirements.in
    #   feedgenerator
    #   ming
qrcode==6.1
    # via -r requirements.in
repoze.lru==0.7
    # via turbogears2
requests==2.26.0
    # via
    #   -r requirements.in
    #   pysolr
    #   requests-oauthlib
requests-oauthlib==1.2.0
    # via -r requirements.in
setproctitle==1.2.2
    # via -r requirements.in
sgmllib3k==1.0.0
    # via feedparser
six==1.16.0
    # via
    #   -r requirements.in
    #   bleach
    #   creoleparser
    #   easywidgets
    #   formencode
    #   html5lib
    #   ming
    #   mock
    #   paste
    #   pastescript
    #   python-dateutil
    #   qrcode
    #   textile
    #   webhelpers2
smmap==4.0.0
    # via gitdb
soupsieve==2.2.1
    # via beautifulsoup4
testfixtures==6.10.0
    # via -r requirements.in
textile==3.0.4
    # via pypeline
timermiddleware==0.5.1
    # via -r requirements.in
translationstring==1.4
    # via colander
turbogears2==2.3.12
    # via -r requirements.in
typing-extensions==3.10.0.2
    # via gitpython
urllib3==1.26.6
    # via requests
waitress==2.0.0
    # via webtest
webencodings==0.5.1
    # via
    #   bleach
    #   html5lib
webhelpers2==2.0
    # via -r requirements.in
webob==1.7.4
    # via
    #   -r requirements.in
    #   easywidgets
    #   timermiddleware
    #   turbogears2
    #   webtest
webtest==3.0.0
    # via -r requirements.in
werkzeug==2.0.2
    # via -r requirements.in
wrapt==1.11.2
    # via -r requirements.in

# The following packages are considered to be unsafe in a requirements file:
# setuptools
