#
# 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
importlib-metadata==4.8.3
    # via markdown
inflection==0.5.1
    # via profanityfilter
iso8601==0.1.16
    # via colander
jinja2==3.0.2
    # via -r requirements.in
markdown==3.3.6
    # via
    #   -r requirements.in
    #   markdown-checklist
    #   pypeline
markdown-checklist==0.4.3
    # 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==9.0.1
    # via -r requirements.in
profanityfilter==2.0.6
    # via -r requirements.in
pycparser==2.20
    # via cffi
pyflakes==2.4.0
    # 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
    #   importlib-metadata
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
zipp==3.6.0
    # via importlib-metadata

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