#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile
#
activitystream==0.4.2
    # 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 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==42.0.5
    # via
    #   -r requirements.in
    #   joserfc
decorator==5.1.1
    # via -r requirements.in
diff-match-patch==20230430
    # via sxsdiff
distlib==0.3.8
    # 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.13.1
    # 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.33
    # 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==3.1.0
    # via
    #   -r requirements.in
    #   pastescript
pastescript==3.4.0
    # via -r requirements.in
pillow==10.3.0
    # via -r requirements.in
platformdirs==4.1.0
    # via virtualenv
pluggy==1.3.0
    # via pytest
pre-commit==3.6.0 ; python_version >= "3.9"
    # via -r requirements.in
pre-commit==3.5.0 ; python_version < "3.9"
    # 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.4
    # via
    #   -r requirements.in
    #   pytest-sugar
    #   pytest-xdist
pytest-sugar==0.9.7
    # via -r requirements.in
pytest-xdist==3.5.0
    # 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.3.2
    # 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.4.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.25.0
    # 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
