aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Flask/py3/flask/debughelpers.py
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-05-03 00:01:03 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2024-05-03 00:06:37 +0300
commit38934cfb0b963a0157cf16c13499977ac87f35b9 (patch)
tree124d141726b8a860761a75fe2b597eecce078ee7 /contrib/python/Flask/py3/flask/debughelpers.py
parent616419d508d3ee4a3b07a82e5cae5ab4544bd1e2 (diff)
downloadydb-38934cfb0b963a0157cf16c13499977ac87f35b9.tar.gz
Intermediate changes
Diffstat (limited to 'contrib/python/Flask/py3/flask/debughelpers.py')
-rw-r--r--contrib/python/Flask/py3/flask/debughelpers.py46
1 files changed, 24 insertions, 22 deletions
diff --git a/contrib/python/Flask/py3/flask/debughelpers.py b/contrib/python/Flask/py3/flask/debughelpers.py
index 212f7d7ee88..27d378c24a4 100644
--- a/contrib/python/Flask/py3/flask/debughelpers.py
+++ b/contrib/python/Flask/py3/flask/debughelpers.py
@@ -41,53 +41,55 @@ class DebugFilesKeyError(KeyError, AssertionError):
class FormDataRoutingRedirect(AssertionError):
- """This exception is raised by Flask in debug mode if it detects a
- redirect caused by the routing system when the request method is not
- GET, HEAD or OPTIONS. Reasoning: form data will be dropped.
+ """This exception is raised in debug mode if a routing redirect
+ would cause the browser to drop the method or body. This happens
+ when method is not GET, HEAD or OPTIONS and the status code is not
+ 307 or 308.
"""
def __init__(self, request):
exc = request.routing_exception
buf = [
- f"A request was sent to this URL ({request.url}) but a"
- " redirect was issued automatically by the routing system"
- f" to {exc.new_url!r}."
+ f"A request was sent to '{request.url}', but routing issued"
+ f" a redirect to the canonical URL '{exc.new_url}'."
]
- # In case just a slash was appended we can be extra helpful
- if f"{request.base_url}/" == exc.new_url.split("?")[0]:
+ if f"{request.base_url}/" == exc.new_url.partition("?")[0]:
buf.append(
- " The URL was defined with a trailing slash so Flask"
- " will automatically redirect to the URL with the"
- " trailing slash if it was accessed without one."
+ " The URL was defined with a trailing slash. Flask"
+ " will redirect to the URL with a trailing slash if it"
+ " was accessed without one."
)
buf.append(
- " Make sure to directly send your"
- f" {request.method}-request to this URL since we can't make"
- " browsers or HTTP clients redirect with form data reliably"
- " or without user interaction."
+ " Send requests to the canonical URL, or use 307 or 308 for"
+ " routing redirects. Otherwise, browsers will drop form"
+ " data.\n\n"
+ "This exception is only raised in debug mode."
)
- buf.append("\n\nNote: this exception is only raised in debug mode")
- AssertionError.__init__(self, "".join(buf).encode("utf-8"))
+ super().__init__("".join(buf))
def attach_enctype_error_multidict(request):
- """Since Flask 0.8 we're monkeypatching the files object in case a
- request is detected that does not use multipart form data but the files
- object is accessed.
+ """Patch ``request.files.__getitem__`` to raise a descriptive error
+ about ``enctype=multipart/form-data``.
+
+ :param request: The request to patch.
+ :meta private:
"""
oldcls = request.files.__class__
class newcls(oldcls):
def __getitem__(self, key):
try:
- return oldcls.__getitem__(self, key)
+ return super().__getitem__(key)
except KeyError as e:
if key not in request.form:
raise
- raise DebugFilesKeyError(request, key) from e
+ raise DebugFilesKeyError(request, key).with_traceback(
+ e.__traceback__
+ ) from None
newcls.__name__ = oldcls.__name__
newcls.__module__ = oldcls.__module__