Files
tildes/tildes/requirements.txt
Deimos f41bd1eabe Upgrade webargs to 6.1.0
This was not a fun upgrade. webargs made some major changes to its
approaches in 6.0, which are mostly covered here:
https://webargs.readthedocs.io/en/latest/upgrading.html

To keep using it on Tildes, this commit had to make the following
changes:

  - Write my own wrapper for use_kwargs that changes some of the default
    behavior. Specifically, we want the location that data is being
    loaded from to default to "query" (the query string) instead of
    webargs' default of "json". We also needed to set the "unknown"
    behavior on every schema to "exclude" so that the schemas would
    ignore any data fields they didn't need, since the default behavior
    is to throw an error, which happens almost everywhere because of
    Intercooler variables and/or multiple use_kwargs calls for different
    subsets of the data.

  - All @pre_load hooks in schemas needed to be rewritten so that they
    weren't modifying data in-place (copy to a new data dict first).
    Because webargs is now passing all data through all schemas,
    modifying in-place could result in an earlier schema modifying data
    that would then be passed in modified form to the later ones.
    Specifically, this caused an issue with tags on posting a new topic,
    where we just wanted to treat the tags as a string, but TopicSchema
    would convert it to a list in @pre_load.

  - use_kwargs on every endpoint using non-query data needed to be
    updated to support the new single-location approach, either replacing
    an existing locations= with location=, or adding location="form",
    since form data was no longer used by default.

  - The code that parsed the errors returned by webargs/Marshmallow
    ValidationErrors needed to update to handle the additional "level"
    in the dict of errors, where errors are now split out by location
    and then field, instead of only by field.

  - A few other minor updates, like always passing a schema object
    instead of a class, and never passing a callable (mostly just for
    simplicity in the wrapper).
2020-07-31 12:13:23 -06:00

82 lines
2.6 KiB
Plaintext

ago==0.0.93
alembic==1.4.2
argon2-cffi==20.1.0
backcall==0.2.0 # via ipython
beautifulsoup4==4.9.1
bleach==3.1.5
cached-property==1.5.1 # via pygit2
certifi==2020.6.20 # via requests, sentry-sdk
cffi==1.14.1 # via argon2-cffi, pygit2
chardet==3.0.4 # via requests
click==7.1.2
cornice==5.0.1
decorator==4.4.2 # via ipython, traitlets
gunicorn==20.0.4
html5lib==1.1
hupper==1.10.2 # via pyramid
idna==2.10 # via requests
ipython-genutils==0.2.0 # via traitlets
ipython==7.16.1
jedi==0.17.2 # via ipython
jinja2==2.11.2 # via pyramid-jinja2
mako==1.1.3 # via alembic
markupsafe==1.1.1 # via jinja2, mako, pyramid-jinja2
marshmallow==3.7.1
packaging==20.4 # via bleach
parso==0.7.1 # via jedi
pastedeploy==2.1.0 # via plaster-pastedeploy
pexpect==4.8.0 # via ipython
pickleshare==0.7.5 # via ipython
pillow==7.2.0
pip-tools==5.3.0
plaster-pastedeploy==0.7 # via pyramid
plaster==1.0 # via plaster-pastedeploy, pyramid
prometheus-client==0.8.0
prompt-toolkit==3.0.5 # via ipython
psycopg2==2.8.5
ptyprocess==0.6.0 # via pexpect
publicsuffix2==2.20160818
pycparser==2.20 # via cffi
pygit2==1.2.1
pygments==2.6.1
pyotp==2.4.0
pyparsing==2.4.7 # via packaging
pyramid-ipython==0.2
pyramid-jinja2==2.8
pyramid-session-redis==1.5.0
pyramid-tm==2.4
pyramid-webassets==0.10
pyramid==1.10.4
python-dateutil==2.8.1
python-editor==1.0.4 # via alembic
pyyaml==5.3.1
qrcode==6.1
redis==3.5.3
regex==2020.7.14 # via titlecase
requests==2.24.0
sentry-sdk==0.16.2
six==1.15.0 # via argon2-cffi, bleach, html5lib, packaging, pip-tools, pyramid-session-redis, pyramid-webassets, python-dateutil, qrcode, sqlalchemy-utils, traitlets
soupsieve==2.0.1 # via beautifulsoup4
sqlalchemy-utils==0.36.8
sqlalchemy==1.3.18
stripe==2.49.0
titlecase==1.1.1
traitlets==4.3.3 # via ipython
transaction==3.0.0 # via pyramid-tm, zope.sqlalchemy
translationstring==1.4 # via pyramid
urllib3==1.25.10 # via requests, sentry-sdk
venusian==3.0.0 # via cornice, pyramid
wcwidth==0.2.5 # via prompt-toolkit
webargs==6.1.0
webassets==2.0 # via pyramid-webassets
webencodings==0.5.1 # via bleach, html5lib
webob==1.8.6 # via pyramid
wrapt==1.12.1
zope.deprecation==4.4.0 # via pyramid, pyramid-jinja2
zope.interface==5.1.0 # via pyramid, pyramid-webassets, transaction, zope.sqlalchemy
zope.sqlalchemy==1.3
# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools