#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile
#
activitystream==0.4.0
    # via -r requirements.in
beaker==1.12.1
    # via -r requirements.in
beautifulsoup4==4.12.2
    # via
    #   -r requirements.in
    #   webtest
bleach[css]==6.0.0
    # via pypeline
certifi==2023.7.22
    # via requests
cffi==1.15.1
    # via cryptography
cfgv==3.4.0
    # via pre-commit
charset-normalizer==3.3.0
    # 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.4
    # via -r requirements.in
decorator==5.1.1
    # via -r requirements.in
diff-match-patch==20230430
    # via sxsdiff
distlib==0.3.7
    # via virtualenv
docutils==0.19
    # via pypeline
easywidgets==0.4.1
    # via -r requirements.in
emoji==2.7.0
    # via -r requirements.in
execnet==2.0.2
    # via pytest-xdist
faust-cchardet==2.1.18
    # via -r requirements.in
feedgenerator==2.1.0
    # via -r requirements.in
feedparser==6.0.10
    # via -r requirements.in
filelock==3.12.3
    # via virtualenv
formencode==2.0.1
    # via
    #   -r requirements.in
    #   easywidgets
genshi==0.7.7
    # via creoleparser
gitdb==4.0.10
    # via gitpython
gitpython==3.1.35
    # via -r requirements.in
gunicorn==21.2.0
    # via -r requirements.in
html5lib==1.1
    # via
    #   -r requirements.in
    #   pypeline
    #   textile
identify==2.5.28
    # via pre-commit
idna==3.4
    # via requests
inflection==0.5.1
    # via profanityfilter
iniconfig==2.0.0
    # via pytest
iso8601==1.1.0
    # via colander
jinja2==3.1.2
    # via -r requirements.in
markdown==3.4.4
    # 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.1
    # via
    #   gunicorn
    #   pytest
    #   pytest-sugar
paginate==0.5.6
    # via -r requirements.in
paste==3.5.3
    # 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.0.1
    # via -r requirements.in
platformdirs==3.10.0
    # via virtualenv
pluggy==1.2.0
    # via pytest
pre-commit==3.4.0
    # via -r requirements.in
profanityfilter==2.0.6
    # via -r requirements.in
pycparser==2.21
    # via cffi
pygments==2.15.1
    # via -r requirements.in
pymongo==3.13.0
    # via
    #   -r requirements.in
    #   activitystream
    #   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.0
    # 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
    # via
    #   -r requirements.in
    #   feedgenerator
    #   ming
pyyaml==6.0.1
    # via pre-commit
qrcode==7.4.2
    # via -r requirements.in
regex==2022.10.31
    # 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.0.281
    # 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
    #   sxsdiff
    #   webhelpers2
smmap==5.0.0
    # 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.1.0
    # via -r requirements.in
textile==4.0.2
    # via pypeline
timermiddleware==0.6.2
    # 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.7.1
    # via qrcode
urllib3==2.0.6
    # 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==2.3.7
    # via -r requirements.in
wrapt==1.15.0
    # via -r requirements.in

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