aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Flask/py3/flask/testing.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/testing.py
parent616419d508d3ee4a3b07a82e5cae5ab4544bd1e2 (diff)
downloadydb-38934cfb0b963a0157cf16c13499977ac87f35b9.tar.gz
Intermediate changes
Diffstat (limited to 'contrib/python/Flask/py3/flask/testing.py')
-rw-r--r--contrib/python/Flask/py3/flask/testing.py95
1 files changed, 40 insertions, 55 deletions
diff --git a/contrib/python/Flask/py3/flask/testing.py b/contrib/python/Flask/py3/flask/testing.py
index 1b35cc7a0b..e07e50e7a2 100644
--- a/contrib/python/Flask/py3/flask/testing.py
+++ b/contrib/python/Flask/py3/flask/testing.py
@@ -172,6 +172,22 @@ class FlaskClient(Client):
headers = resp.get_wsgi_headers(c.request.environ)
self.cookie_jar.extract_wsgi(c.request.environ, headers)
+ def _copy_environ(self, other):
+ return {
+ **self.environ_base,
+ **other,
+ "flask._preserve_context": self.preserve_context,
+ }
+
+ def _request_from_builder_args(self, args, kwargs):
+ kwargs["environ_base"] = self._copy_environ(kwargs.get("environ_base", {}))
+ builder = EnvironBuilder(self.application, *args, **kwargs)
+
+ try:
+ return builder.get_request()
+ finally:
+ builder.close()
+
def open(
self,
*args: t.Any,
@@ -179,64 +195,30 @@ class FlaskClient(Client):
follow_redirects: bool = False,
**kwargs: t.Any,
) -> "TestResponse":
- as_tuple = kwargs.pop("as_tuple", None)
-
- # Same logic as super.open, but apply environ_base and preserve_context.
- request = None
-
- def copy_environ(other):
- return {
- **self.environ_base,
- **other,
- "flask._preserve_context": self.preserve_context,
- }
-
- if not kwargs and len(args) == 1:
- arg = args[0]
-
- if isinstance(arg, werkzeug.test.EnvironBuilder):
- builder = copy(arg)
- builder.environ_base = copy_environ(builder.environ_base or {})
+ if args and isinstance(
+ args[0], (werkzeug.test.EnvironBuilder, dict, BaseRequest)
+ ):
+ if isinstance(args[0], werkzeug.test.EnvironBuilder):
+ builder = copy(args[0])
+ builder.environ_base = self._copy_environ(builder.environ_base or {})
request = builder.get_request()
- elif isinstance(arg, dict):
+ elif isinstance(args[0], dict):
request = EnvironBuilder.from_environ(
- arg, app=self.application, environ_base=copy_environ({})
+ args[0], app=self.application, environ_base=self._copy_environ({})
).get_request()
- elif isinstance(arg, BaseRequest):
- request = copy(arg)
- request.environ = copy_environ(request.environ)
-
- if request is None:
- kwargs["environ_base"] = copy_environ(kwargs.get("environ_base", {}))
- builder = EnvironBuilder(self.application, *args, **kwargs)
-
- try:
- request = builder.get_request()
- finally:
- builder.close()
-
- if as_tuple is not None:
- import warnings
-
- warnings.warn(
- "'as_tuple' is deprecated and will be removed in"
- " Werkzeug 2.1 and Flask 2.1. Use"
- " 'response.request.environ' instead.",
- DeprecationWarning,
- stacklevel=3,
- )
- return super().open(
- request,
- as_tuple=as_tuple,
- buffered=buffered,
- follow_redirects=follow_redirects,
- )
+ else:
+ # isinstance(args[0], BaseRequest)
+ request = copy(args[0])
+ request.environ = self._copy_environ(request.environ)
else:
- return super().open(
- request,
- buffered=buffered,
- follow_redirects=follow_redirects,
- )
+ # request is None
+ request = self._request_from_builder_args(args, kwargs)
+
+ return super().open(
+ request,
+ buffered=buffered,
+ follow_redirects=follow_redirects,
+ )
def __enter__(self) -> "FlaskClient":
if self.preserve_context:
@@ -245,7 +227,10 @@ class FlaskClient(Client):
return self
def __exit__(
- self, exc_type: type, exc_value: BaseException, tb: TracebackType
+ self,
+ exc_type: t.Optional[type],
+ exc_value: t.Optional[BaseException],
+ tb: t.Optional[TracebackType],
) -> None:
self.preserve_context = False