Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix ImportError: cannot import name 'json' from 'itsdangerous' #125

Merged
merged 2 commits into from
Feb 27, 2022

Conversation

Herklos
Copy link
Member

@Herklos Herklos commented Feb 18, 2022

Resolves #124

Inspired from aws-samples/amazon-ecs-mythicalmysfits-workshop#49

Flask changelog (https://flask.palletsprojects.com/en/2.0.x/changes/) :

Version 2.0.3
Released 2022-02-14

The test client’s as_tuple parameter is deprecated and will be removed in Werkzeug 2.1. It is now also deprecated in Flask, to be removed in Flask 2.1, while remaining compatible with both in 2.0.x. Use response.request.environ instead. #4341

Fix type annotation for errorhandler decorator. #4295

Revert a change to the CLI that caused it to hide ImportError tracebacks when importing the application. #4307

app.json_encoder and json_decoder are only passed to dumps and loads if they have custom behavior. This improves performance, mainly on PyPy. #4349

Clearer error message when after_this_request is used outside a request context. #4333

Version 2.0.2
Released 2021-10-04

Fix type annotation for teardown_* methods. #4093

Fix type annotation for before_request and before_app_request decorators. #4104

Fixed the issue where typing requires template global decorators to accept functions with no arguments. #4098

Support View and MethodView instances with async handlers. #4112

Enhance typing of app.errorhandler decorator. #4095

Fix registering a blueprint twice with differing names. #4124

Fix the type of static_folder to accept pathlib.Path. #4150

jsonify handles decimal.Decimal by encoding to str. #4157

Correctly handle raising deferred errors in CLI lazy loading. #4096

The CLI loader handles **kwargs in a create_app function. #4170

Fix the order of before_request and other callbacks that trigger before the view returns. They are called from the app down to the closest nested blueprint. #4229

Version 2.0.1
Released 2021-05-21

Re-add the filename parameter in send_from_directory. The filename parameter has been renamed to path, the old name is deprecated. #4019

Mark top-level names as exported so type checking understands imports in user projects. #4024

Fix type annotation for g and inform mypy that it is a namespace object that has arbitrary attributes. #4020

Fix some types that weren’t available in Python 3.6.0. #4040

Improve typing for send_file, send_from_directory, and get_send_file_max_age. #4044, #4026

Show an error when a blueprint name contains a dot. The . has special meaning, it is used to separate (nested) blueprint names and the endpoint name. #4041

Combine URL prefixes when nesting blueprints that were created with a url_prefix value. #4037

Roll back a change to the order that URL matching was done. The URL is again matched after the session is loaded, so the session is available in custom URL converters. #4053

Re-add deprecated Config.from_json, which was accidentally removed early. #4078

Improve typing for some functions using Callable in their type signatures, focusing on decorator factories. #4060

Nested blueprints are registered with their dotted name. This allows different blueprints with the same name to be nested at different locations. #4069

register_blueprint takes a name option to change the (pre-dotted) name the blueprint is registered with. This allows the same blueprint to be registered multiple times with unique names for url_for. Registering the same blueprint with the same name multiple times is deprecated. #1091

Improve typing for stream_with_context. #4052

Version 2.0.0
Released 2021-05-11

Drop support for Python 2 and 3.5.

Bump minimum versions of other Pallets projects: Werkzeug >= 2, Jinja2 >= 3, MarkupSafe >= 2, ItsDangerous >= 2, Click >= 8. Be sure to check the change logs for each project. For better compatibility with other applications (e.g. Celery) that still require Click 7, there is no hard dependency on Click 8 yet, but using Click 7 will trigger a DeprecationWarning and Flask 2.1 will depend on Click 8.

JSON support no longer uses simplejson. To use another JSON module, override app.json_encoder and json_decoder. #3555

The encoding option to JSON functions is deprecated. #3562

Passing script_info to app factory functions is deprecated. This was not portable outside the flask command. Use click.get_current_context().obj if it’s needed. #3552

The CLI shows better error messages when the app failed to load when looking up commands. #2741

Add sessions.SessionInterface.get_cookie_name() to allow setting the session cookie name dynamically. #3369

Add Config.from_file() to load config using arbitrary file loaders, such as toml.load or json.load. Config.from_json() is deprecated in favor of this. #3398

The flask run command will only defer errors on reload. Errors present during the initial call will cause the server to exit with the traceback immediately. #3431

send_file() raises a ValueError when passed an io object in text mode. Previously, it would respond with 200 OK and an empty file. #3358

When using ad-hoc certificates, check for the cryptography library instead of PyOpenSSL. #3492

When specifying a factory function with FLASK_APP, keyword argument can be passed. #3553

When loading a .env or .flaskenv file, the current working directory is no longer changed to the location of the file. #3560

When returning a (response, headers) tuple from a view, the headers replace rather than extend existing headers on the response. For example, this allows setting the Content-Type for jsonify(). Use response.headers.extend() if extending is desired. #3628

The Scaffold class provides a common API for the Flask and Blueprint classes. Blueprint information is stored in attributes just like Flask, rather than opaque lambda functions. This is intended to improve consistency and maintainability. #3215

Include samesite and secure options when removing the session cookie. #3726

Support passing a pathlib.Path to static_folder. #3579

send_file and send_from_directory are wrappers around the implementations in werkzeug.utils. #3828

Some send_file parameters have been renamed, the old names are deprecated. attachment_filename is renamed to download_name. cache_timeout is renamed to max_age. add_etags is renamed to etag. #3828, #3883

send_file passes download_name even if as_attachment=False by using Content-Disposition: inline. #3828

send_file sets conditional=True and max_age=None by default. Cache-Control is set to no-cache if max_age is not set, otherwise public. This tells browsers to validate conditional requests instead of using a timed cache. #3828

helpers.safe_join is deprecated. Use werkzeug.utils.safe_join instead. #3828

The request context does route matching before opening the session. This could allow a session interface to change behavior based on request.endpoint. #3776

Use Jinja’s implementation of the |tojson filter. #3881

Add route decorators for common HTTP methods. For example, @app.post("/login") is a shortcut for @app.route("/login", methods=["POST"]). #3907

Support async views, error handlers, before and after request, and teardown functions. #3412

Support nesting blueprints. #593, #1548, #3923

Set the default encoding to “UTF-8” when loading .env and .flaskenv files to allow to use non-ASCII characters. #3931

flask shell sets up tab and history completion like the default python shell if readline is installed. #3941

helpers.total_seconds() is deprecated. Use timedelta.total_seconds() instead. #3962

Add type hinting. #3973.

Flask WTF changelog (https://flask-wtf.readthedocs.io/en/1.0.x/changes/) :

Version 1.0.0
Released 2021-11-07

Deprecated items removal #484

Support for alternatives captcha services #425 #342 #387 #384

Version 0.15.1
Released 2021-05-25

Add python_requires metadata to avoid installing on unsupported Python versions. #442

Version 0.15.0
Released 2021-05-24

Drop support for Python < 3.6. #416

FileSize validator. #307, #365

Extra requirement email installs the email_validator package. #423

Fixed Flask 2.0 warnings. #434

Various documentation fixes. #315, #321, #335, #344, #386, #400, #404, #420, #437

Various CI fixes. #405, #438

WTForms changelog (https://github.com/wtforms/wtforms/blob/master/CHANGES.rst)

Version 3.0.1
Released 2021-12-23

Fixed :class:~fields.DateTimeField and other similar fields can handle multiple formats. :issue:720 :pr:721
Stop support for python 3.6 :pr:722
Version 3.0.0
Released 2021-11-07

Fixed :class:~fields.RadioField validators. :issue:477 :pr:615
:meth:~fields.FormField.populate_obj always calls :func:setattr :pr:675
WTForms has a new logo. :issue:569 :pr:689
Fixed :class:~fields.RadioField render_kw rendering. :issue:490 :pr:628 :pr:688
Support for optgroups in :class:~fields.SelectField and :class:~fields.SelectMultipleField. :issue:656 :pr:667
Minor documentation fix. :issue:701
Custom separators for :class:~fields.FieldList. :issue:681 :pr:694
:class:~fields.DateTimeField, :class:~fields.DateField and :class:~fields.TimeField support time formats that removes leading zeros. :pr:703
Refactoring: split fields/core.py and fields/simple.py :pr:710
Version 3.0.0a1
Released 2020-11-23

Drop support for Python < 3.6. :pr:554
:class:~fields.StringField sets data to None when form data is empty and an initial value was not provided. Although it previously set an empty string, None is consistent with the behavior of other fields. :pr:355
Specified version of Babel required for setup to avoid errors. :pr:430
Replaced use of getattr/setattr with regular variable access. :issue:482
:class:ValueError raised by a validator are handled like regular exceptions. Validators need to raise :class:~validators.ValidationError or :class:~validators.StopValidation to make a validation fail. :issue:445
:class:~fields.SelectField, :class:~fields.SelectMultipleField and :class:~fields.RadioField choices parameter can be a callable. :pr:608
Choices shortcut for :class:~fields.core.SelectMultipleField. :issue:603 :pr:605
Forms can have form-level errors. :issue:55 :pr:595
Implemented :class:~wtforms.fields.core.MonthField. :pr:530 :pr:593
Filters can be inline. :meth:form.BaseForm.process takes a extra_filters parameter. :issue:128 :pr:592
Fields can be passed the name argument to use a HTML name different than their Python name. :issue:205, :pr:601
Render attribute names like for_ and class_ are normalized consistently so later values override those specified earlier. :issue:449, :pr:596
Flags can take non-boolean values. :issue:406 :pr:467
Widgets are HTML5 by default. :issue:594 :pr:614
Fixed a bug when the :class:~wtforms.fields.core.SelectField choices are list of strings. :pr:598
Error messages standardization. :issue:613 :pr:620 :pr:626 :pr:627
:class:~wtforms.fields.core.SelectMultipleField validate_choice bugfix. :issue:606 :pr:642
Fixed SelectMultipleField validation when using choices list shortcut. :issue:612 :pr:661

Copy link
Member

@GuillaumeDSM GuillaumeDSM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍
We should make sure that websockets still work after this major flask update before we merge everything

@Herklos Herklos merged commit 4231029 into master Feb 27, 2022
@Herklos Herklos deleted the fix/import branch February 27, 2022 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ImportError: cannot import name 'json' from 'itsdangerous'
2 participants