- pytest 5.x drops python2 compatibility and therefore only implements PEP 451
- pytest 5.x made the repr of `ExcInfo` less confusing (fixed tests depending
on the old format)
Before, returning a `bool` from a route caused the error
```
[2019-05-31 10:08:42,216] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 2070, in make_response
rv = self.response_class.force_type(rv, request.environ)
File "/Users/johnzeringue/Documents/ts-open/flask/env/lib/python3.7/site-packages/werkzeug/wrappers/base_response.py", line 269, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "/Users/johnzeringue/Documents/ts-open/flask/env/lib/python3.7/site-packages/werkzeug/wrappers/base_response.py", line 26, in _run_wsgi_app
return _run_wsgi_app(*args)
File "/Users/johnzeringue/Documents/ts-open/flask/env/lib/python3.7/site-packages/werkzeug/test.py", line 1119, in run_wsgi_app
app_rv = app(environ, start_response)
TypeError: 'bool' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 2393, in wsgi_app
response = self.full_dispatch_request()
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 1906, in full_dispatch_request
return self.finalize_request(rv)
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 1921, in finalize_request
response = self.make_response(rv)
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 2078, in make_response
reraise(TypeError, new_error, sys.exc_info()[2])
File "/Users/johnzeringue/Documents/ts-open/flask/flask/_compat.py", line 39, in reraise
raise value.with_traceback(tb)
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 2070, in make_response
rv = self.response_class.force_type(rv, request.environ)
File "/Users/johnzeringue/Documents/ts-open/flask/env/lib/python3.7/site-packages/werkzeug/wrappers/base_response.py", line 269, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "/Users/johnzeringue/Documents/ts-open/flask/env/lib/python3.7/site-packages/werkzeug/wrappers/base_response.py", line 26, in _run_wsgi_app
return _run_wsgi_app(*args)
File "/Users/johnzeringue/Documents/ts-open/flask/env/lib/python3.7/site-packages/werkzeug/test.py", line 1119, in run_wsgi_app
app_rv = app(environ, start_response)
TypeError: 'bool' object is not callable
The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a bool.
```
Now, it returns the more readable
```
[2019-05-31 10:36:19,500] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 2400, in wsgi_app
response = self.full_dispatch_request()
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 1907, in full_dispatch_request
return self.finalize_request(rv)
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 1922, in finalize_request
response = self.make_response(rv)
File "/Users/johnzeringue/Documents/ts-open/flask/flask/app.py", line 2085, in make_response
" {rv.__class__.__name__}.".format(rv=rv))
TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a bool.
```
Fixes#3214
This supports an increasingly common usecase whereby JSON is the
primary response (rather than a templated string). Given Flask has a
short syntax for HTML reponses, it seems fitting that it should also
do so for JSON responses. In practice it allows,
@app.route("/")
def index():
return {
"api_stuff": "values",
}
* Current behavior: If a base class inherits MethodView and child class
inherits without overwriting "methods". The "methods" defined in base
class would be ignored
* Fix: Inherit all the "methods" defined in base classes if "methods"
variable is not overwritten
If attachment filename is bytes type and contains non-ascii coded bytes,
then the following ASCII encoding process will trigger
UnicodeDecodeError exception.
Fix issue #2933.
See: https://www.python.org/dev/peps/pep-0519/
This is mostly encountered with pathlib in python 3, but this API
suggests any PathLike object can be treated like a filepath with
`__fspath__` function.
This is mainly intended for custom CLIs that may load a config file
which already sets the debug flag and does not make use of the `FLASK_*`
env vars at all.