This commit implements https://tools.ietf.org/html/rfc2231#section-4 in
order to support sending unicode characters. Tested on both Firefox and
Chromium under Linux.
This adds unidecode as a dependency, which might be relaxed by using
.encode('latin-1', 'ignore') but wouldn't be as useful.
Also, added a test for the correct headers to be added.
Previously, using a filename parameter to send_file with unicode characters, it
failed with the next error since HTTP headers don't allow non latin-1 characters.
Error on request:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/werkzeug/serving.py", line 193, in run_wsgi
execute(self.server.app)
File "/usr/lib/python3.6/site-packages/werkzeug/serving.py", line 186, in execute
write(b'')
File "/usr/lib/python3.6/site-packages/werkzeug/serving.py", line 152, in write
self.send_header(key, value)
File "/usr/lib64/python3.6/http/server.py", line 509, in send_header
("%s: %s\r\n" % (keyword, value)).encode('latin-1', 'strict'))
UnicodeEncodeError: 'latin-1' codec can't encode character '\uff0f' in position 58: ordinal not in range(256)
Fixes#1286
Before:
```
C:\dev\tmp>py -2 -m flask run
Traceback (most recent call last):
File "C:\Python27\lib\runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Python27\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "c:\dev\sourcetree\flask\flask\__main__.py", line 15, in <module>
main(as_module=True)
File "c:\dev\sourcetree\flask\flask\cli.py", line 523, in main
cli.main(args=args, prog_name=name)
File "c:\dev\sourcetree\flask\flask\cli.py", line 383, in main
return AppGroup.main(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\click\core.py", line 697, in main
rv = self.invoke(ctx)
File "C:\Python27\lib\site-packages\click\core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Python27\lib\site-packages\click\core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Python27\lib\site-packages\click\core.py", line 535, in invoke
return callback(*args, **kwargs)
File "C:\Python27\lib\site-packages\click\decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args[1:], **kwargs)
File "C:\Python27\lib\site-packages\click\core.py", line 535, in invoke
return callback(*args, **kwargs)
File "c:\dev\sourcetree\flask\flask\cli.py", line 433, in run_command
app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
File "c:\dev\sourcetree\flask\flask\cli.py", line 153, in __init__
self._load_unlocked()
File "c:\dev\sourcetree\flask\flask\cli.py", line 177, in _load_unlocked
self._app = rv = self.loader()
File "c:\dev\sourcetree\flask\flask\cli.py", line 238, in load_app
rv = locate_app(self.app_import_path)
File "c:\dev\sourcetree\flask\flask\cli.py", line 91, in locate_app
__import__(module)
File "C:\dev\tmp\error.py", line 1, in <module>
import whatisthisidonteven
ImportError: No module named whatisthisidonteven
```
After:
```
C:\dev\tmp>py -2 -m flask run
Usage: python -m flask run [OPTIONS]
Error: There was an error trying to import the app (error):
Traceback (most recent call last):
File "c:\dev\sourcetree\flask\flask\cli.py", line 91, in locate_app
__import__(module)
File "C:\dev\tmp\error.py", line 1, in <module>
import whatisthisidonteven
ImportError: No module named whatisthisidonteven```
* Don't rely on X-Requested-With for pretty print json response
* Fix test cases for pretty print json patch
* Fix gramma error in docs for pretty print json config
* Add changelog for JSONIFY_PRETTYPRINT_REGULAR
* Add tips for debug config with flask cli
`app.debug` and `app.config['DEBUG']` are not compatible with the `flask` script.
* Grammar fix
* Grammar fix