#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile
#
activitystream==0.4.1
    # via -r requirements.in
beaker==1.12.1
    # via
    #   -r requirements.in
    #   beaker-session-jwt
beaker-session-jwt==1.0.1
    # via -r requirements.in
beautifulsoup4==4.12.2
    # via
    #   -r requirements.in
    #   webtest
bleach[css]==6.1.0
    # via
    #   bleach
    #   pypeline
certifi==2023.11.17
    # via requests
cffi==1.16.0
    # via cryptography
cfgv==3.4.0
    # via pre-commit
charset-normalizer==3.3.2
    # via requests
colander==1.8.3
    # via -r requirements.in
crank==0.8.1
    # via turbogears2
creoleparser==0.7.5
    # via pypeline
cryptography==41.0.7
    # via
    #   -r requirements.in
    #   joserfc
decorator==5.1.1
    # via -r requirements.in
diff-match-patch==20230430
    # via sxsdiff
distlib==0.3.7
    # via virtualenv
docutils==0.20.1
    # via pypeline
easywidgets==0.4.1
    # via -r requirements.in
emoji==2.9.0
    # via -r requirements.in
execnet==2.0.2
    # via pytest-xdist
faust-cchardet==2.1.19
    # via -r requirements.in
feedgenerator==2.1.0
    # via -r requirements.in
feedparser==6.0.11
    # via -r requirements.in
filelock==3.12.4
    # via virtualenv
formencode==2.1.0
    # via
    #   -r requirements.in
    #   easywidgets
genshi==0.7.7
    # via creoleparser
gitdb==4.0.11
    # via gitpython
gitpython==3.1.41
    # via -r requirements.in
gunicorn==21.2.0
    # via -r requirements.in
html5lib==1.1
    # via
    #   -r requirements.in
    #   pypeline
    #   textile
identify==2.5.30
    # via pre-commit
idna==3.6
    # via requests
inflection==0.5.1
    # via profanityfilter
iniconfig==2.0.0
    # via pytest
iso8601==1.1.0
    # via colander
jinja2==3.1.3
    # via -r requirements.in
joserfc==0.9.0
    # via beaker-session-jwt
markdown==3.5.2
    # via
    #   -r requirements.in
    #   markdown-checklist
    #   pypeline
markdown-checklist==0.4.4
    # via -r requirements.in
markupsafe==2.1.3
    # via
    #   -r requirements.in
    #   easywidgets
    #   jinja2
    #   turbogears2
    #   webhelpers2
    #   werkzeug
ming==0.13.0
    # via -r requirements.in
mock==5.1.0
    # via -r requirements.in
nodeenv==1.8.0
    # via pre-commit
oauthlib==3.2.2
    # via
    #   -r requirements.in
    #   requests-oauthlib
packaging==23.2
    # via
    #   gunicorn
    #   pytest
    #   pytest-sugar
paginate==0.5.6
    # via -r requirements.in
paste==3.7.1
    # via
    #   -r requirements.in
    #   easywidgets
    #   pastescript
pastedeploy==2.1.1
    # via
    #   -r requirements.in
    #   pastescript
pastescript==3.3.0
    # via -r requirements.in
pillow==10.2.0
    # via -r requirements.in
platformdirs==3.11.0
    # via virtualenv
pluggy==1.3.0
    # via pytest
pre-commit==3.5.0
    # via -r requirements.in
profanityfilter==2.0.6
    # via -r requirements.in
pycparser==2.21
    # via cffi
pygments==2.17.2
    # via -r requirements.in
pymongo==3.13.0
    # via
    #   -r requirements.in
    #   activitystream
    #   beaker-session-jwt
    #   ming
pypeline[creole,markdown,rst,textile]==0.6.1
    # via -r requirements.in
pypng==0.20220715.0
    # via qrcode
pysolr==3.9.0
    # via -r requirements.in
pytest==7.4.2
    # via
    #   -r requirements.in
    #   pytest-sugar
    #   pytest-xdist
pytest-sugar==0.9.7
    # via -r requirements.in
pytest-xdist==3.3.1
    # 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==2023.3.post1
    # via
    #   -r requirements.in
    #   feedgenerator
    #   ming
pyyaml==6.0.1
    # via pre-commit
qrcode==7.4.2
    # via -r requirements.in
regex==2023.12.25
    # via
    #   regex-as-re-globally
    #   textile
regex-as-re-globally==0.0.3
    # via -r requirements.in
repoze-lru==0.7
    # via turbogears2
requests==2.31.0
    # via
    #   -r requirements.in
    #   pysolr
    #   requests-oauthlib
requests-oauthlib==1.3.1
    # via -r requirements.in
ruff==0.1.13
    # via -r requirements.in
setproctitle==1.3.3
    # via -r requirements.in
sgmllib3k==1.0.0
    # via feedparser
six==1.16.0
    # via
    #   -r requirements.in
    #   bleach
    #   creoleparser
    #   easywidgets
    #   genshi
    #   html5lib
    #   paste
    #   pastescript
    #   python-dateutil
    #   sxsdiff
    #   webhelpers2
smmap==5.0.1
    # via gitdb
soupsieve==2.4.1
    # via beautifulsoup4
sxsdiff==0.3.0
    # via -r requirements.in
termcolor==2.3.0
    # via pytest-sugar
testfixtures==7.2.2
    # via -r requirements.in
textile==4.0.2
    # via pypeline
timermiddleware==0.6.3
    # via -r requirements.in
tinycss2==1.1.1
    # via bleach
translationstring==1.4
    # via colander
turbogears2==2.4.3
    # via -r requirements.in
typing-extensions==4.9.0
    # via qrcode
urllib3==2.1.0
    # via requests
virtualenv==20.24.5
    # via pre-commit
waitress==2.1.2
    # via webtest
webencodings==0.5.1
    # via
    #   bleach
    #   html5lib
    #   tinycss2
webhelpers2==2.0
    # via -r requirements.in
webob==1.8.7
    # via
    #   -r requirements.in
    #   easywidgets
    #   timermiddleware
    #   turbogears2
    #   webtest
webtest==3.0.0
    # via -r requirements.in
werkzeug==3.0.1
    # via -r requirements.in
wrapt==1.16.0
    # via -r requirements.in

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