Commit graph

1175 commits

Author SHA1 Message Date
David Lord
91e53da054
Merge pull request #3236 from lordmauve/no-cligroup-empty
Do not register empty CLI groups from Blueprint
2019-05-31 13:05:00 -04:00
David Lord
524f9c32c7
Merge pull request #3233 from rtilk89/unused_werkzerg_import
Issue #3226: Remove unused werkzeug datastructure import
2019-05-31 12:58:44 -04:00
David Lord
94e057224c
Merge pull request #3239 from gokcegrbl/GH-3227
Comment on bare except usage in _compat.py
2019-05-31 12:56:43 -04:00
David Lord
52f9aa7ed6
Merge pull request #3235 from johnzeringue/better-return-type-error
Better error message when view return type is not supported
2019-05-31 12:50:59 -04:00
gokcegrbl
1b526c837e Comment on bare except usage in _compat.py
(Fixes pallets/flask#3227)
2019-05-31 16:27:51 +00:00
John Zeringue
8bb7185284 Better error message when view return type is not supported
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
2019-05-31 11:58:49 -04:00
Daniel Pope
f25b5000fd Do not register empty CLI groups from Blueprint
(Fixes #3224)
2019-05-31 16:49:01 +01:00
David Lord
14e9291380
Merge pull request #3234 from tomowind/issue_3225
#3225: document "del tb"
2019-05-31 10:58:44 -04:00
Sang Min Park
2a97d4a706 #3225: document 2019-05-31 10:55:08 -04:00
Ryan Thielke
cd14adbc1e Issue #3226: Remove unused werkzeug datastructure import 2019-05-31 09:52:53 -05:00
Daniel Pope
a5ff3cd01b Fix style issues on master using Black 2019-05-31 11:57:28 +01:00
Fantix King
a71c167836
fix teardown bug in FlaskClient
* Fixes pytest-dev/pytest-flask#42
2019-05-25 14:03:28 -07:00
David Lord
ed9ab2d3b6
strip static url trailing slash at assignment 2019-05-25 11:18:40 -07:00
Pete Beardmore
a12bf290da
fix 'static_url_path' defaulting for empty paths
-prefix a path delimiter iff there's a path to delimit
-ensures a valid default static route rule is created on application
intialisation for the case 'static_folder=""' and implicit
'static_url_path'
2019-05-25 07:03:36 -07:00
Anthony Plunkett
ec1ccd7530
Add Blueprint level cli command registration
Implements #1357.
Adds ability to register click cli commands onto blueprint.
2019-05-24 14:43:29 -07:00
pgjones
7bf8366970
Allow dictionary return values as JSON
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",
         }
2019-05-24 09:48:55 -07:00
David Lord
e18cc4d71d
add SeparatedPathType to accept multiple paths
Multiple paths for the reloader's `--extra-files` are accepted as one
option, separated by ':'.
2019-05-24 07:19:56 -07:00
Bruno Rocha
2308cba407
Fix #2897 - Add extra_files option to flask run CLI 2019-05-23 10:47:41 -07:00
David Baumgold
fcf2eb4753
FakeSignal should stub connect_via method 2019-05-23 07:44:57 -07:00
Adarsh Sharma
db8cb31f2b
Fix #2937: Ensure the consistency in load_dotenv's return type 2019-05-19 11:58:39 -07:00
vorelq
e1cc16f8be
Fix 0 port value being overriden by default
By explicitly comparing port value with None,
instead of using its bool() value.
2019-05-19 11:36:47 -07:00
shidenggui
2a2a11b063
allow customizing url map class 2019-05-18 21:50:56 -07:00
Eruvanos
6af14f058b
support dataclass in JSONEncoder 2019-05-18 21:37:54 -07:00
Frankie Liu
2039e2e3b6
Remove ending slash from static_url_path 2019-05-18 21:23:14 -07:00
EtiennePelletier
e0afff0e92
Simplify flask.cli.main
Werkzeug>=0.15's reloader now properly detects `python -m module`.
Fixes #3022
2019-05-18 21:15:09 -07:00
EtiennePelletier
8590d65a57
Use Werkzeug's JSONMixin class and update tests
Flask's JSONMixin class was moved to Werkzeug>=0.15

Co-authored-by: Jeffrey Eliasen <jeff@jke.net>
2019-05-18 20:57:26 -07:00
David Lord
957f48a98d
use dict literal syntax for jinja_options
clarify docs about when jinja_options can be modified
2019-05-18 08:35:47 -07:00
EtiennePelletier
af3c24c7df
Make jinja_options a dict rather than ImmutaleDict
This allows changing jinja environment options from the flask app:
>>> app.jinja_options['undefined'] = jinja2.ChainableUndefined
2019-05-18 05:31:55 -07:00
LeeW
1f3923a999
Inherit "methods" in MethodView
* 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
2019-05-17 13:57:06 -07:00
David Lord
6f703a564c
clean up open_resource and tests 2019-05-17 13:23:27 -07:00
icreatedanaccount
ad709be46e
Allow mode='rt' on open_resource() helper 2019-05-17 13:22:13 -07:00
David Lord
05a4e15ee4
Merge branch '1.0.x' 2019-05-17 11:13:08 -07:00
David Lord
99660cc409
release version 1.0.3 2019-05-17 10:57:51 -07:00
David Lord
a4f0f19796
don't push app context for test client json 2019-05-17 09:00:08 -07:00
DamianSkrzypczak
e2f4b53396
Fix dev-server warning message readability (#3168) 2019-05-16 19:03:08 -07:00
Michael E. Karpeles
ac78da0bb0
removed unused reference to url_join 2019-05-16 17:47:14 -07:00
David Lord
2236ba980c
Merge branch '1.0.x' 2019-05-16 12:18:36 -07:00
David Lord
b765e0db50
Merge pull request #3196 from jakseb/fix-docs-paren
Fix misplaced paren in docs
2019-05-16 08:28:58 -07:00
RyanSquared
d23b160e6d
helpers.py: Fix docs of url_for(..., _external=True) 2019-05-16 06:54:20 -07:00
Sebastian Jakubiak
205c943ded Fix misplaced paren in docs 2019-05-13 22:22:40 +02:00
David Baumgold
025589ee76 Reformat with black
https://github.com/python/black
2019-05-06 16:28:58 -04:00
cclauss
47bdf9f26f
_compat.py: Use feature detection instead of version detection
When run on Python 3, linters such as Pylint and Flake8 will correctly flag __unicode__ and __long__ as _undefined names_ because _compat.py does not currently follow the Python porting best practice [___use feature detection instead of version detection___](https://docs.python.org/3/howto/pyporting.html#use-feature-detection-instead-of-version-detection).  This PR allows this project to pass those tests without adding any linter directives.
2019-01-25 09:44:29 +01:00
David Lord
a74864ec22
Merge remote-tracking branch 'origin/1.0-maintenance' 2019-01-07 10:00:10 -08:00
David Lord
662ce2151d
add changelog for GH-2986 2019-01-07 09:52:54 -08:00
Jimmy Jia
b92b2e6c74
Do not handle RoutingExceptions with app error handlers 2019-01-07 09:01:37 -08:00
garenchan
40118e785f
Make sure the attachment filename is text type.
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.
2019-01-07 07:17:33 -08:00
David Lord
366f3f49af
add changelog for GH-2957 2019-01-07 06:56:20 -08:00
Ignasi Bosch
b570bf699c
Allow partial content on bytesio 2019-01-07 06:17:36 -08:00
David Lord
4f3dbb3f3b
Merge branch '1.0-maintenance' 2019-01-06 16:33:17 -08:00
David Lord
a0ccc47780
clean up flask --version code 2019-01-06 16:24:05 -08:00