Make Flask extension compatible with Flask>=2.2.0 #25
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Flask 2.2.0 deprecated the context stack in favour of using Python ContextVar, and introduced a fake stack for some sort of backward compatibility. However, it is not compatible enough for us as the existing code would blindly push context replacing any existing one, which will break application code.
The extension now does the recommended action of storing its data on flask.g - in this case we store the context that needs to be popped since _app_ctx_stack is deprecated.
There are no existing tests for this extension but I've tested it locally to my satisfaction.
Drive-by fix: Since Signals doesn't guarantee the order of callbacks, enable local callbacks for the job_started and job_finished signals so that users can be sure that the context was pushed.
Fixes: #24