#
# 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
regex==2022.3.2
    # via regex-as-re-globally
regex-as-re-globally==0.0.2
    # 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.2
    # 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
