#
# 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.13.0
    # via
    #   -r requirements.in
    #   beaker-session-jwt
beaker-session-jwt==1.0.1
    # via -r requirements.in
beautifulsoup4==4.12.3
    # via
    #   -r requirements.in
    #   webtest
bleach[css]==6.1.0
    # via
    #   bleach
    #   pypeline
certifi==2024.2.2
    # 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
    #   -r requirements.in
    #   pypeline
easywidgets==0.4.1
    # via -r requirements.in
emoji==2.11.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.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.43
    # via -r requirements.in
gunicorn==22.0.0
    # via -r requirements.in
html5lib==1.1
    # via
    #   -r requirements.in
    #   pypeline
    #   textile
identify==2.5.35
    # via pre-commit
idna==3.7
    # via requests
inflection==0.5.1
    # via profanityfilter
iniconfig==2.0.0
    # via pytest
iso8601==1.1.0
    # via colander
jinja2==3.1.4
    # via -r requirements.in
joserfc==0.9.0
    # via beaker-session-jwt
markdown==3.6
    # via
    #   -r requirements.in
    #   markdown-checklist
    #   pypeline
markdown-checklist==0.4.4
    # via -r requirements.in
markupsafe==2.1.5
    # 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==24.0
    # via
    #   gunicorn
    #   pytest
    #   pytest-sugar
paginate==0.5.6
    # via -r requirements.in
paste==3.9.0
    # via
    #   -r requirements.in
    #   easywidgets
    #   pastescript
pastedeploy==3.1.0
    # via
    #   -r requirements.in
    #   pastescript
pastescript==3.5.1
    # via -r requirements.in
pillow==10.3.0
    # via -r requirements.in
platformdirs==4.2.0
    # via virtualenv
pluggy==1.4.0
    # via pytest
pre-commit==3.5.0 ; python_version < "3.9"
# via -r requirements.in
pre-commit==3.7.0 ; python_version >= "3.9"
profanityfilter==2.0.6
    # via -r requirements.in
pycparser==2.22
    # 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==8.1.1
    # via
    #   -r requirements.in
    #   pytest-sugar
    #   pytest-xdist
pytest-sugar==1.0.0
    # via -r requirements.in
pytest-xdist==3.5.0
    # via -r requirements.in
python-dateutil==2.9.0.post0
    # 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==2024.4.16
    # 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.32.1
    # via
    #   -r requirements.in
    #   pysolr
    #   requests-oauthlib
requests-oauthlib==2.0.0
    # via -r requirements.in
ruff==0.3.7
    # 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
    #   python-dateutil
    #   sxsdiff
    #   webhelpers2
smmap==5.0.1
    # via gitdb
soupsieve==2.5
    # via beautifulsoup4
sxsdiff==0.3.0
    # via -r requirements.in
termcolor==2.4.0
    # via pytest-sugar
testfixtures==8.1.0
    # 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.2.1
    # via requests
virtualenv==20.25.3
    # via pre-commit
waitress==2.1.2
    # via webtest
webencodings==0.5.1
    # via
    #   bleach
    #   html5lib
    #   tinycss2
webhelpers2==2.1
    # 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.3
    # 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
