#
# This file is autogenerated by pip-compile with python 3.7
# To update, run:
#
#    pip-compile
#
activitystream==0.4.0
    # via -r requirements.in
attrs==22.1.0
    # via pytest
beaker==1.11.0
    # via -r requirements.in
beautifulsoup4==4.11.1
    # via
    #   -r requirements.in
    #   webtest
bleach[css]==5.0.1
    # via pypeline
cchardet==2.1.7
    # via -r requirements.in
certifi==2022.9.24
    # via requests
cffi==1.15.1
    # via cryptography
charset-normalizer==2.1.1
    # via requests
colander==1.8.3
    # via -r requirements.in
crank==0.8.1
    # via turbogears2
creoleparser==0.7.5
    # via pypeline
cryptography==38.0.3
    # via -r requirements.in
datadiff==2.0.0
    # via -r requirements.in
decorator==5.1.1
    # via -r requirements.in
docutils==0.19
    # via pypeline
easywidgets==0.4.1
    # via -r requirements.in
emoji==2.2.0
    # via -r requirements.in
feedgenerator==2.0.0
    # via -r requirements.in
feedparser==6.0.10
    # via -r requirements.in
formencode==2.0.1
    # via
    #   -r requirements.in
    #   easywidgets
genshi==0.7.7
    # via creoleparser
gitdb==4.0.9
    # via gitpython
gitpython==3.1.29
    # via -r requirements.in
gunicorn==20.1.0
    # via -r requirements.in
html5lib==1.1
    # via
    #   -r requirements.in
    #   pypeline
    #   textile
idna==3.4
    # via requests
importlib-metadata==4.13.0
    # via
    #   -r requirements.in
    #   markdown
    #   pluggy
    #   pytest
inflection==0.5.1
    # via profanityfilter
iniconfig==1.1.1
    # via pytest
iso8601==1.1.0
    # via colander
jinja2==3.1.2
    # via -r requirements.in
markdown==3.3.7
    # via
    #   -r requirements.in
    #   markdown-checklist
    #   pypeline
markdown-checklist==0.4.4
    # via -r requirements.in
markupsafe==2.1.0
    # via
    #   -r requirements.in
    #   easywidgets
    #   jinja2
    #   turbogears2
    #   webhelpers2
ming==0.12.1
    # via -r requirements.in
mock==4.0.3
    # via -r requirements.in
oauthlib==3.2.2
    # via
    #   -r requirements.in
    #   requests-oauthlib
packaging==21.3
    # via pytest
paginate==0.5.6
    # via -r requirements.in
paste==3.5.2
    # via
    #   -r requirements.in
    #   easywidgets
    #   pastescript
pastedeploy==2.1.1
    # via
    #   -r requirements.in
    #   pastescript
pastescript==3.2.1
    # via -r requirements.in
pillow==9.3.0
    # via -r requirements.in
pluggy==1.0.0
    # via pytest
profanityfilter==2.0.6
    # via -r requirements.in
py==1.11.0
    # via pytest
pycparser==2.21
    # via cffi
pyflakes==2.5.0
    # via -r requirements.in
pygments==2.13.0
    # via -r requirements.in
pymongo==3.13.0
    # via
    #   -r requirements.in
    #   activitystream
    #   ming
pyparsing==2.4.7
    # via packaging
pypeline[creole,markdown,rst,textile]==0.6.1
    # via -r requirements.in
pysolr==3.9.0
    # via -r requirements.in
pytest==7.1.3
    # via -r requirements.in
python-dateutil==2.8.2
    # via
    #   -r requirements.in
    #   easywidgets
python-magic==0.4.27
    # via -r requirements.in
python-oembed==0.2.4
    # via -r requirements.in
pytz==2022.6
    # via
    #   -r requirements.in
    #   feedgenerator
    #   ming
qrcode==7.3.1
    # via -r requirements.in
regex==2022.10.31
    # via
    #   regex-as-re-globally
    #   textile
regex-as-re-globally==0.0.2
    # via -r requirements.in
repoze-lru==0.7
    # via turbogears2
requests==2.28.1
    # via
    #   -r requirements.in
    #   pysolr
    #   requests-oauthlib
requests-oauthlib==1.3.1
    # via -r requirements.in
setproctitle==1.3.2
    # via -r requirements.in
sgmllib3k==1.0.0
    # via feedparser
six==1.16.0
    # via
    #   -r requirements.in
    #   bleach
    #   creoleparser
    #   easywidgets
    #   formencode
    #   genshi
    #   html5lib
    #   paste
    #   pastescript
    #   python-dateutil
    #   webhelpers2
smmap==5.0.0
    # via gitdb
soupsieve==2.3.2.post1
    # via beautifulsoup4
testfixtures==7.0.2
    # via -r requirements.in
textile==4.0.2
    # via pypeline
timermiddleware==0.6.2
    # via -r requirements.in
tinycss2==1.1.1
    # via bleach
tomli==2.0.1
    # via pytest
translationstring==1.4
    # via colander
turbogears2==2.3.12
    # via -r requirements.in
typing-extensions==4.4.0
    # via
    #   gitpython
    #   importlib-metadata
urllib3==1.26.12
    # via requests
waitress==2.1.2
    # via webtest
webencodings==0.5.1
    # via
    #   bleach
    #   html5lib
    #   tinycss2
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.1.2
    # via -r requirements.in
wrapt==1.14.1
    # via -r requirements.in
zipp==3.10.0
    # via importlib-metadata

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