aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Flask/py3/flask/blueprints.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/blueprints.py
parent616419d508d3ee4a3b07a82e5cae5ab4544bd1e2 (diff)
downloadydb-38934cfb0b963a0157cf16c13499977ac87f35b9.tar.gz
Intermediate changes
Diffstat (limited to 'contrib/python/Flask/py3/flask/blueprints.py')
-rw-r--r--contrib/python/Flask/py3/flask/blueprints.py84
1 files changed, 33 insertions, 51 deletions
diff --git a/contrib/python/Flask/py3/flask/blueprints.py b/contrib/python/Flask/py3/flask/blueprints.py
index 5c23a735c85..87617989e04 100644
--- a/contrib/python/Flask/py3/flask/blueprints.py
+++ b/contrib/python/Flask/py3/flask/blueprints.py
@@ -3,23 +3,13 @@ import typing as t
from collections import defaultdict
from functools import update_wrapper
+from . import typing as ft
from .scaffold import _endpoint_from_view_func
from .scaffold import _sentinel
from .scaffold import Scaffold
-from .typing import AfterRequestCallable
-from .typing import BeforeFirstRequestCallable
-from .typing import BeforeRequestCallable
-from .typing import TeardownCallable
-from .typing import TemplateContextProcessorCallable
-from .typing import TemplateFilterCallable
-from .typing import TemplateGlobalCallable
-from .typing import TemplateTestCallable
-from .typing import URLDefaultCallable
-from .typing import URLValuePreprocessorCallable
if t.TYPE_CHECKING:
from .app import Flask
- from .typing import ErrorHandlerCallable
DeferredSetupFunction = t.Callable[["BlueprintSetupState"], t.Callable]
@@ -299,24 +289,14 @@ class Blueprint(Scaffold):
name = f"{name_prefix}.{self_name}".lstrip(".")
if name in app.blueprints:
+ bp_desc = "this" if app.blueprints[name] is self else "a different"
existing_at = f" '{name}'" if self_name != name else ""
- if app.blueprints[name] is not self:
- raise ValueError(
- f"The name '{self_name}' is already registered for"
- f" a different blueprint{existing_at}. Use 'name='"
- " to provide a unique name."
- )
- else:
- import warnings
-
- warnings.warn(
- f"The name '{self_name}' is already registered for"
- f" this blueprint{existing_at}. Use 'name=' to"
- " provide a unique name. This will become an error"
- " in Flask 2.1.",
- stacklevel=4,
- )
+ raise ValueError(
+ f"The name '{self_name}' is already registered for"
+ f" {bp_desc} blueprint{existing_at}. Use 'name=' to"
+ f" provide a unique name."
+ )
first_bp_registration = not any(bp is self for bp in app.blueprints.values())
first_name_registration = name not in app.blueprints
@@ -404,7 +384,7 @@ class Blueprint(Scaffold):
self,
rule: str,
endpoint: t.Optional[str] = None,
- view_func: t.Optional[t.Callable] = None,
+ view_func: t.Optional[ft.ViewCallable] = None,
provide_automatic_options: t.Optional[bool] = None,
**options: t.Any,
) -> None:
@@ -429,7 +409,7 @@ class Blueprint(Scaffold):
def app_template_filter(
self, name: t.Optional[str] = None
- ) -> t.Callable[[TemplateFilterCallable], TemplateFilterCallable]:
+ ) -> t.Callable[[ft.TemplateFilterCallable], ft.TemplateFilterCallable]:
"""Register a custom template filter, available application wide. Like
:meth:`Flask.template_filter` but for a blueprint.
@@ -437,14 +417,14 @@ class Blueprint(Scaffold):
function name will be used.
"""
- def decorator(f: TemplateFilterCallable) -> TemplateFilterCallable:
+ def decorator(f: ft.TemplateFilterCallable) -> ft.TemplateFilterCallable:
self.add_app_template_filter(f, name=name)
return f
return decorator
def add_app_template_filter(
- self, f: TemplateFilterCallable, name: t.Optional[str] = None
+ self, f: ft.TemplateFilterCallable, name: t.Optional[str] = None
) -> None:
"""Register a custom template filter, available application wide. Like
:meth:`Flask.add_template_filter` but for a blueprint. Works exactly
@@ -461,7 +441,7 @@ class Blueprint(Scaffold):
def app_template_test(
self, name: t.Optional[str] = None
- ) -> t.Callable[[TemplateTestCallable], TemplateTestCallable]:
+ ) -> t.Callable[[ft.TemplateTestCallable], ft.TemplateTestCallable]:
"""Register a custom template test, available application wide. Like
:meth:`Flask.template_test` but for a blueprint.
@@ -471,14 +451,14 @@ class Blueprint(Scaffold):
function name will be used.
"""
- def decorator(f: TemplateTestCallable) -> TemplateTestCallable:
+ def decorator(f: ft.TemplateTestCallable) -> ft.TemplateTestCallable:
self.add_app_template_test(f, name=name)
return f
return decorator
def add_app_template_test(
- self, f: TemplateTestCallable, name: t.Optional[str] = None
+ self, f: ft.TemplateTestCallable, name: t.Optional[str] = None
) -> None:
"""Register a custom template test, available application wide. Like
:meth:`Flask.add_template_test` but for a blueprint. Works exactly
@@ -497,7 +477,7 @@ class Blueprint(Scaffold):
def app_template_global(
self, name: t.Optional[str] = None
- ) -> t.Callable[[TemplateGlobalCallable], TemplateGlobalCallable]:
+ ) -> t.Callable[[ft.TemplateGlobalCallable], ft.TemplateGlobalCallable]:
"""Register a custom template global, available application wide. Like
:meth:`Flask.template_global` but for a blueprint.
@@ -507,14 +487,14 @@ class Blueprint(Scaffold):
function name will be used.
"""
- def decorator(f: TemplateGlobalCallable) -> TemplateGlobalCallable:
+ def decorator(f: ft.TemplateGlobalCallable) -> ft.TemplateGlobalCallable:
self.add_app_template_global(f, name=name)
return f
return decorator
def add_app_template_global(
- self, f: TemplateGlobalCallable, name: t.Optional[str] = None
+ self, f: ft.TemplateGlobalCallable, name: t.Optional[str] = None
) -> None:
"""Register a custom template global, available application wide. Like
:meth:`Flask.add_template_global` but for a blueprint. Works exactly
@@ -531,7 +511,9 @@ class Blueprint(Scaffold):
self.record_once(register_template)
- def before_app_request(self, f: BeforeRequestCallable) -> BeforeRequestCallable:
+ def before_app_request(
+ self, f: ft.BeforeRequestCallable
+ ) -> ft.BeforeRequestCallable:
"""Like :meth:`Flask.before_request`. Such a function is executed
before each request, even if outside of a blueprint.
"""
@@ -541,15 +523,15 @@ class Blueprint(Scaffold):
return f
def before_app_first_request(
- self, f: BeforeFirstRequestCallable
- ) -> BeforeFirstRequestCallable:
+ self, f: ft.BeforeFirstRequestCallable
+ ) -> ft.BeforeFirstRequestCallable:
"""Like :meth:`Flask.before_first_request`. Such a function is
executed before the first request to the application.
"""
self.record_once(lambda s: s.app.before_first_request_funcs.append(f))
return f
- def after_app_request(self, f: AfterRequestCallable) -> AfterRequestCallable:
+ def after_app_request(self, f: ft.AfterRequestCallable) -> ft.AfterRequestCallable:
"""Like :meth:`Flask.after_request` but for a blueprint. Such a function
is executed after each request, even if outside of the blueprint.
"""
@@ -558,7 +540,7 @@ class Blueprint(Scaffold):
)
return f
- def teardown_app_request(self, f: TeardownCallable) -> TeardownCallable:
+ def teardown_app_request(self, f: ft.TeardownCallable) -> ft.TeardownCallable:
"""Like :meth:`Flask.teardown_request` but for a blueprint. Such a
function is executed when tearing down each request, even if outside of
the blueprint.
@@ -569,8 +551,8 @@ class Blueprint(Scaffold):
return f
def app_context_processor(
- self, f: TemplateContextProcessorCallable
- ) -> TemplateContextProcessorCallable:
+ self, f: ft.TemplateContextProcessorCallable
+ ) -> ft.TemplateContextProcessorCallable:
"""Like :meth:`Flask.context_processor` but for a blueprint. Such a
function is executed each request, even if outside of the blueprint.
"""
@@ -579,29 +561,29 @@ class Blueprint(Scaffold):
)
return f
- def app_errorhandler(self, code: t.Union[t.Type[Exception], int]) -> t.Callable:
+ def app_errorhandler(
+ self, code: t.Union[t.Type[Exception], int]
+ ) -> t.Callable[[ft.ErrorHandlerDecorator], ft.ErrorHandlerDecorator]:
"""Like :meth:`Flask.errorhandler` but for a blueprint. This
handler is used for all requests, even if outside of the blueprint.
"""
- def decorator(
- f: "ErrorHandlerCallable[Exception]",
- ) -> "ErrorHandlerCallable[Exception]":
+ def decorator(f: ft.ErrorHandlerDecorator) -> ft.ErrorHandlerDecorator:
self.record_once(lambda s: s.app.errorhandler(code)(f))
return f
return decorator
def app_url_value_preprocessor(
- self, f: URLValuePreprocessorCallable
- ) -> URLValuePreprocessorCallable:
+ self, f: ft.URLValuePreprocessorCallable
+ ) -> ft.URLValuePreprocessorCallable:
"""Same as :meth:`url_value_preprocessor` but application wide."""
self.record_once(
lambda s: s.app.url_value_preprocessors.setdefault(None, []).append(f)
)
return f
- def app_url_defaults(self, f: URLDefaultCallable) -> URLDefaultCallable:
+ def app_url_defaults(self, f: ft.URLDefaultCallable) -> ft.URLDefaultCallable:
"""Same as :meth:`url_defaults` but application wide."""
self.record_once(
lambda s: s.app.url_default_functions.setdefault(None, []).append(f)