diff --git a/stubs/WTForms/wtforms/csrf/core.pyi b/stubs/WTForms/wtforms/csrf/core.pyi index 4db69c8c5223..403446b96bdd 100644 --- a/stubs/WTForms/wtforms/csrf/core.pyi +++ b/stubs/WTForms/wtforms/csrf/core.pyi @@ -4,7 +4,7 @@ from typing import Any from typing_extensions import Self from wtforms.fields import HiddenField -from wtforms.fields.core import UnboundField, _Filter, _FormT, _Validator, _Widget +from wtforms.fields.core import UnboundField, _Filter, _FormT, _Text, _Validator, _Widget from wtforms.form import BaseForm from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext @@ -15,10 +15,10 @@ class CSRFTokenField(HiddenField): csrf_impl: CSRF def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: str | Callable[[], str] | None = None, widget: _Widget[Self] | None = None, diff --git a/stubs/WTForms/wtforms/fields/choices.pyi b/stubs/WTForms/wtforms/fields/choices.pyi index 08bf08bbf182..47d8a475a318 100644 --- a/stubs/WTForms/wtforms/fields/choices.pyi +++ b/stubs/WTForms/wtforms/fields/choices.pyi @@ -5,7 +5,7 @@ from typing import Any, Literal, NamedTuple, TypeAlias, TypeVar, overload from typing_extensions import Self, deprecated from wtforms.datalist import DataList -from wtforms.fields.core import Field, _Filter, _FormT, _Validator, _Widget +from wtforms.fields.core import Field, _Filter, _FormT, _Text, _Validator, _Widget from wtforms.form import BaseForm from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext @@ -60,15 +60,15 @@ class SelectFieldBase(Field): option_widget: _Widget[_Option] def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, option_widget: _Widget[_Option] | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[Self] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, @@ -91,23 +91,23 @@ class SelectFieldBase(Field): class SelectField(SelectFieldBase): coerce: Callable[[Any], Any] validate_choice: bool - invalid_choice_message: str + invalid_choice_message: _Text @overload @deprecated("Starting with WTForms 3.4 only SelectChoice will be supported as choices inputs") def __init__( self, - label: str | None, + label: _Text | None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None, coerce: Callable[[Any], Any], choices: _LegacyChoices | _LegacyChoicesCallback, validate_choice: bool = True, - invalid_value_message: str | None = None, - invalid_choice_message: str | None = None, + invalid_value_message: _Text | None = None, + invalid_choice_message: _Text | None = None, *, option_widget: _Widget[_Option] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, widget: _Widget[Self] | None = None, @@ -123,17 +123,17 @@ class SelectField(SelectFieldBase): @deprecated("Starting with WTForms 3.4 only SelectChoice will be supported as choices inputs") def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, coerce: Callable[[Any], Any] = ..., *, choices: _LegacyChoices | _LegacyChoicesCallback, validate_choice: bool = True, - invalid_value_message: str | None = None, - invalid_choice_message: str | None = None, + invalid_value_message: _Text | None = None, + invalid_choice_message: _Text | None = None, option_widget: _Widget[_Option] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, widget: _Widget[Self] | None = None, @@ -148,17 +148,17 @@ class SelectField(SelectFieldBase): @overload def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, coerce: Callable[[Any], Any] = ..., choices: Iterable[SelectChoice] | _SelectChoicesCallback[Self] | None = None, validate_choice: bool = True, - invalid_value_message: str | None = None, - invalid_choice_message: str | None = None, + invalid_value_message: _Text | None = None, + invalid_choice_message: _Text | None = None, *, option_widget: _Widget[_Option] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, widget: _Widget[Self] | None = None, @@ -187,17 +187,17 @@ class RadioField(SelectField): @deprecated("Starting with WTForms 3.4 only SelectChoice will be supported as choices inputs") def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, *, option_widget: _Widget[_Option] | None = None, coerce: Callable[[Any], Any] = ..., choices: _LegacyChoices | _LegacyChoicesCallback | None = None, validate_choice: bool = True, - invalid_value_message: str | None = None, - invalid_choice_message: str | None = None, + invalid_value_message: _Text | None = None, + invalid_choice_message: _Text | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, widget: _Widget[Self] | None = None, @@ -212,17 +212,17 @@ class RadioField(SelectField): @overload def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, *, option_widget: _Widget[_Option] | None = None, coerce: Callable[[Any], Any] = ..., choices: Iterable[SelectChoice] | _SelectChoicesCallback[Self] | None = None, validate_choice: bool = True, - invalid_value_message: str | None = None, - invalid_choice_message: str | None = None, + invalid_value_message: _Text | None = None, + invalid_choice_message: _Text | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, widget: _Widget[Self] | None = None, diff --git a/stubs/WTForms/wtforms/fields/core.pyi b/stubs/WTForms/wtforms/fields/core.pyi index 40c72c447901..c835c0a856b7 100644 --- a/stubs/WTForms/wtforms/fields/core.pyi +++ b/stubs/WTForms/wtforms/fields/core.pyi @@ -25,6 +25,16 @@ class _Validator(Protocol[_FormT_contra, _FieldT_contra]): class _Widget(Protocol[_FieldT_contra]): def __call__(self, field: _FieldT_contra, **kwargs: Any) -> Markup: ... +# A deferred translation such as flask_babel's LazyString: labels and +# descriptions render it through markupsafe.escape(), and some validators +# %-format their message before raising. +@type_check_only +class _LazyString(Protocol): + def __html__(self) -> str: ... + def __mod__(self, value: Any, /) -> str: ... + +_Text: TypeAlias = str | _LazyString + class Field: errors: Sequence[str] process_errors: Sequence[str] @@ -38,7 +48,7 @@ class Field: do_not_call_in_templates: bool meta: DefaultMeta default: Any | None - description: str + description: _Text render_kw: dict[str, Any] filters: Sequence[_Filter] flags: Flags @@ -47,14 +57,14 @@ class Field: id: str type: str label: Label - invalid_value_message: str | None + invalid_value_message: _Text | None # technically this can return UnboundField, but that is not allowed # by type checkers, so we use a descriptor hack to get around this # limitation instead def __new__(cls, *args: Any, **kwargs: Any) -> Self: ... def __init__( self, - label: str | None = None, + label: _Text | None = None, # for tuple we can be a bit more type safe and only accept validators # that would work on this or a less specific field, but in general it # would be too annoying to restrict to Sequence[_Validator], since mypy @@ -62,10 +72,10 @@ class Field: # the common base class between all validators validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[Self] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, @@ -141,7 +151,7 @@ class Flags: class Label: field_id: str - text: str - def __init__(self, field_id: str, text: str) -> None: ... + text: _Text + def __init__(self, field_id: str, text: _Text) -> None: ... def __html__(self) -> str: ... - def __call__(self, text: str | None = None, **kwargs: Any) -> Markup: ... + def __call__(self, text: _Text | None = None, **kwargs: Any) -> Markup: ... diff --git a/stubs/WTForms/wtforms/fields/datetime.pyi b/stubs/WTForms/wtforms/fields/datetime.pyi index 95004a228352..d9a63d4b9cc7 100644 --- a/stubs/WTForms/wtforms/fields/datetime.pyi +++ b/stubs/WTForms/wtforms/fields/datetime.pyi @@ -4,7 +4,7 @@ from typing import Any from typing_extensions import Self, deprecated from wtforms.datalist import DataList -from wtforms.fields.core import Field, _Filter, _FormT, _Validator, _Widget +from wtforms.fields.core import Field, _Filter, _FormT, _Text, _Validator, _Widget from wtforms.form import BaseForm from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext @@ -18,13 +18,13 @@ class DateTimeField(Field): default: datetime | Callable[[], datetime] | None def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, format: str | list[str] = "%Y-%m-%d %H:%M:%S", - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: datetime | Callable[[], datetime] | None = None, widget: _Widget[Self] | None = None, @@ -42,13 +42,13 @@ class DateField(DateTimeField): default: date | Callable[[], date] | None # type: ignore[assignment] def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, format: str | list[str] = "%Y-%m-%d", - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: date | Callable[[], date] | None = None, widget: _Widget[Self] | None = None, @@ -66,13 +66,13 @@ class TimeField(DateTimeField): default: time | Callable[[], time] | None # type: ignore[assignment] def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, format: str | list[str] = "%H:%M", - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: time | Callable[[], time] | None = None, widget: _Widget[Self] | None = None, @@ -88,15 +88,15 @@ class TimeField(DateTimeField): class MonthField(DateField): def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, format: str | list[str] = "%Y-%m", *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: time | Callable[[], time] | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[Self] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, @@ -110,13 +110,13 @@ class MonthField(DateField): class WeekField(DateField): def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, format: str | list[str] = "%Y-W%W", # only difference is the default value - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: time | Callable[[], time] | None = None, widget: _Widget[Self] | None = None, @@ -132,14 +132,14 @@ class WeekField(DateField): class DateTimeLocalField(DateTimeField): def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, format: str | list[str] = ..., - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, tz: tzinfo | Callable[[], tzinfo | None] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: time | Callable[[], time] | None = None, widget: _Widget[Self] | None = None, diff --git a/stubs/WTForms/wtforms/fields/form.pyi b/stubs/WTForms/wtforms/fields/form.pyi index e47a04eaca3d..623aadcb4300 100644 --- a/stubs/WTForms/wtforms/fields/form.pyi +++ b/stubs/WTForms/wtforms/fields/form.pyi @@ -2,7 +2,7 @@ from collections.abc import Iterator from typing import Any, Generic, TypeVar from wtforms.datalist import DataList -from wtforms.fields.core import Field, _Widget +from wtforms.fields.core import Field, _Text, _Widget from wtforms.form import BaseForm, _FormErrors from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext @@ -17,14 +17,14 @@ class FormField(Field, Generic[_BoundFormT]): def __init__( self: FormField[_BoundFormT], # pyright: ignore[reportInvalidTypeVarUse] #11780 form_class: type[_BoundFormT], - label: str | None = None, + label: _Text | None = None, validators: None = None, separator: str = "-", *, - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[FormField[_BoundFormT]] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, diff --git a/stubs/WTForms/wtforms/fields/list.pyi b/stubs/WTForms/wtforms/fields/list.pyi index cf37fa24d4ac..94e4b7ed8a62 100644 --- a/stubs/WTForms/wtforms/fields/list.pyi +++ b/stubs/WTForms/wtforms/fields/list.pyi @@ -2,7 +2,7 @@ from collections.abc import Callable, Iterable, Iterator, Sequence from typing import Any, Generic, TypeVar from wtforms.datalist import DataList -from wtforms.fields.core import Field, UnboundField, _FormT, _Validator, _Widget +from wtforms.fields.core import Field, UnboundField, _FormT, _Text, _Validator, _Widget from wtforms.form import BaseForm from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext @@ -26,16 +26,16 @@ class FieldList(Field, Generic[_BoundFieldT]): self: FieldList[_BoundFieldT], # pyright: ignore[reportInvalidTypeVarUse] #11780 # because of our workaround we need to accept Field as well unbound_field: UnboundField[_BoundFieldT] | _BoundFieldT, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, _BoundFieldT], ...] | list[Any] | None = None, min_entries: int = 0, max_entries: int | None = None, separator: str = "-", default: Iterable[Any] | Callable[[], Iterable[Any]] = (), *, - description: str = "", + description: _Text = "", id: str | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[FieldList[Any]] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, diff --git a/stubs/WTForms/wtforms/fields/numeric.pyi b/stubs/WTForms/wtforms/fields/numeric.pyi index a8ae1ef3af2c..5ec1dd522848 100644 --- a/stubs/WTForms/wtforms/fields/numeric.pyi +++ b/stubs/WTForms/wtforms/fields/numeric.pyi @@ -4,7 +4,7 @@ from typing import Any, Literal, overload from typing_extensions import Self from wtforms.datalist import DataList -from wtforms.fields.core import Field, _Filter, _FormT, _Validator, _Widget +from wtforms.fields.core import Field, _Filter, _FormT, _Text, _Validator, _Widget from wtforms.form import BaseForm from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext from wtforms.utils import UnsetValue @@ -17,7 +17,7 @@ class LocaleAwareNumberField(Field): locale: str def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, use_locale: bool = False, # this accepts a babel.numbers.NumberPattern, but since it @@ -26,10 +26,10 @@ class LocaleAwareNumberField(Field): number_format: str | Any | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: object | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[Self] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, @@ -47,12 +47,12 @@ class IntegerField(Field): default: int | Callable[[], int] | None def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: int | Callable[[], int] | None = None, widget: _Widget[Self] | None = None, @@ -76,19 +76,19 @@ class DecimalField(LocaleAwareNumberField): @overload def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, *, places: UnsetValue = ..., rounding: None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, use_locale: Literal[True], # this accepts a babel.numbers.NumberPattern, but since it # is an optional dependency we don't want to depend on it # for annotation this one argument number_format: str | Any | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: Decimal | Callable[[], Decimal] | None = None, widget: _Widget[Self] | None = None, @@ -103,11 +103,11 @@ class DecimalField(LocaleAwareNumberField): @overload def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, places: int | UnsetValue | None = ..., rounding: str | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, use_locale: Literal[False] = False, # this accepts a babel.numbers.NumberPattern, but since it @@ -115,7 +115,7 @@ class DecimalField(LocaleAwareNumberField): # for annotation this one argument number_format: str | Any | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: Decimal | Callable[[], Decimal] | None = None, widget: _Widget[Self] | None = None, @@ -135,12 +135,12 @@ class FloatField(Field): default: float | Callable[[], float] | None def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: float | Callable[[], float] | None = None, widget: _Widget[Self] | None = None, diff --git a/stubs/WTForms/wtforms/fields/simple.pyi b/stubs/WTForms/wtforms/fields/simple.pyi index 4278b0572878..e6f9292a9b70 100644 --- a/stubs/WTForms/wtforms/fields/simple.pyi +++ b/stubs/WTForms/wtforms/fields/simple.pyi @@ -3,7 +3,7 @@ from typing import Any from typing_extensions import Self from wtforms.datalist import DataList -from wtforms.fields.core import Field, _Filter, _FormT, _Validator, _Widget +from wtforms.fields.core import Field, _Filter, _FormT, _Text, _Validator, _Widget from wtforms.form import BaseForm from wtforms.meta import DefaultMeta, _SupportsGettextAndNgettext @@ -30,15 +30,15 @@ class BooleanField(Field): false_values: Collection[Any] def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, false_values: Collection[Any] | None = None, *, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: bool | Callable[[], bool] | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[Self] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, @@ -54,13 +54,13 @@ class StringField(Field): default: str | Callable[[], str] | None def __init__( self, - label: str | None = None, + label: _Text | None = None, validators: tuple[_Validator[_FormT, Self], ...] | list[Any] | None = None, filters: Sequence[_Filter] = (), - description: str = "", + description: _Text = "", id: str | None = None, default: str | Callable[[], str] | None = None, - invalid_value_message: str | None = None, + invalid_value_message: _Text | None = None, widget: _Widget[Self] | None = None, render_kw: dict[str, Any] | None = None, name: str | None = None, diff --git a/stubs/WTForms/wtforms/validators.pyi b/stubs/WTForms/wtforms/validators.pyi index ce0765c07e09..24d26e6f9838 100644 --- a/stubs/WTForms/wtforms/validators.pyi +++ b/stubs/WTForms/wtforms/validators.pyi @@ -5,6 +5,7 @@ from re import Match, Pattern from typing import Any, TypeVar, overload from wtforms.fields import Field, StringField +from wtforms.fields.core import _Text from wtforms.form import BaseForm __all__ = ( @@ -48,35 +49,35 @@ __all__ = ( _ValuesT_contra = TypeVar("_ValuesT_contra", bound=Collection[Any], contravariant=True) class ValidationError(ValueError): - def __init__(self, message: str = "", *args: object) -> None: ... + def __init__(self, message: _Text = "", *args: object) -> None: ... class StopValidation(Exception): - def __init__(self, message: str = "", *args: object) -> None: ... + def __init__(self, message: _Text = "", *args: object) -> None: ... class EqualTo: fieldname: str - message: str | None - def __init__(self, fieldname: str, message: str | None = None) -> None: ... + message: _Text | None + def __init__(self, fieldname: str, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: Field) -> None: ... class Length: min: int max: int - message: str | None + message: _Text | None field_flags: dict[str, Any] - def __init__(self, min: int = -1, max: int = -1, message: str | None = None) -> None: ... + def __init__(self, min: int = -1, max: int = -1, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: StringField) -> None: ... class NumberRange: min: float | Decimal | Callable[[], float | Decimal | None] | None max: float | Decimal | Callable[[], float | Decimal | None] | None - message: str | None + message: _Text | None field_flags: dict[str, Any] def __init__( self, min: float | Decimal | Callable[[], float | Decimal | None] | None = None, max: float | Decimal | Callable[[], float | Decimal | None] | None = None, - message: str | None = None, + message: _Text | None = None, ) -> None: ... # any numeric field will work, for now we don't try to use a union # to restrict to the defined numeric fields, since user-defined fields @@ -87,13 +88,13 @@ class NumberRange: class DateRange: min: date | datetime | Callable[[], date | datetime | None] | None max: date | datetime | Callable[[], date | datetime | None] | None - message: str + message: _Text field_flags: dict[str, Any] def __init__( self, min: date | datetime | Callable[[], date | datetime | None] | None = None, max: date | datetime | Callable[[], date | datetime | None] | None = None, - message: str | None = None, + message: _Text | None = None, ) -> None: ... def __call__(self, form: BaseForm, field: Field) -> None: ... @@ -104,34 +105,34 @@ class Optional: def __call__(self, form: BaseForm, field: Field) -> None: ... class DataRequired: - message: str | None + message: _Text | None field_flags: dict[str, Any] - def __init__(self, message: str | None = None) -> None: ... + def __init__(self, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: Field) -> None: ... class InputRequired: - message: str | None + message: _Text | None field_flags: dict[str, Any] - def __init__(self, message: str | None = None) -> None: ... + def __init__(self, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: Field) -> None: ... class Regexp: regex: Pattern[str] - message: str | None + message: _Text | None matcher: Callable[[Pattern[str], str], Match[str]] field_flags: dict[str, Any] def __init__( self, regex: str | Pattern[str], flags: int = 0, - message: str | None = None, + message: _Text | None = None, matcher: Callable[[Pattern[str], str], Match[str]] = ..., html_pattern: bool | str | Callable[[Pattern[str]], bool | str] = False, ) -> None: ... - def __call__(self, form: BaseForm, field: StringField, message: str | None = None) -> Match[str]: ... + def __call__(self, form: BaseForm, field: StringField, message: _Text | None = None) -> Match[str]: ... class Email: - message: str | None + message: _Text | None granular_message: bool check_deliverability: bool test_environment: bool | None @@ -139,7 +140,7 @@ class Email: allow_empty_local: bool | None def __init__( self, - message: str | None = None, + message: _Text | None = None, granular_message: bool = False, check_deliverability: bool = False, test_environment: bool | None = None, @@ -151,8 +152,8 @@ class Email: class IPAddress: ipv4: bool ipv6: bool - message: str | None - def __init__(self, ipv4: bool = True, ipv6: bool = False, message: str | None = None) -> None: ... + message: _Text | None + def __init__(self, ipv4: bool = True, ipv6: bool = False, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: StringField) -> None: ... @classmethod def check_ipv4(cls, value: str | None) -> bool: ... @@ -160,13 +161,13 @@ class IPAddress: def check_ipv6(cls, value: str | None) -> bool: ... class MacAddress(Regexp): - def __init__(self, message: str | None = None) -> None: ... + def __init__(self, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: StringField) -> None: ... # type: ignore[override] class URL: allow_userinfo: bool schemes: Collection[str] - message: str | None + message: _Text | None validate_hostname: HostnameValidation def __init__( self, @@ -174,29 +175,29 @@ class URL: allow_ip: bool = True, allow_userinfo: bool = False, schemes: Collection[str] = ..., - message: str | None = None, + message: _Text | None = None, ) -> None: ... def __call__(self, form: BaseForm, field: StringField) -> None: ... # type: ignore[override] class UUID: - message: str | None - def __init__(self, message: str | None = None) -> None: ... + message: _Text | None + def __init__(self, message: _Text | None = None) -> None: ... def __call__(self, form: BaseForm, field: StringField) -> None: ... class AnyOf: values: Collection[Any] - message: str | None + message: _Text | None values_formatter: Callable[[Any], str] @overload - def __init__(self, values: Collection[Any], message: str | None = None, values_formatter: None = None) -> None: ... + def __init__(self, values: Collection[Any], message: _Text | None = None, values_formatter: None = None) -> None: ... @overload def __init__( - self, values: _ValuesT_contra, message: str | None, values_formatter: Callable[[_ValuesT_contra], str] + self, values: _ValuesT_contra, message: _Text | None, values_formatter: Callable[[_ValuesT_contra], str] ) -> None: ... @overload def __init__( - self, values: _ValuesT_contra, message: str | None = None, *, values_formatter: Callable[[_ValuesT_contra], str] + self, values: _ValuesT_contra, message: _Text | None = None, *, values_formatter: Callable[[_ValuesT_contra], str] ) -> None: ... def __call__(self, form: BaseForm, field: Field) -> None: ... @@ -205,18 +206,18 @@ class AnyOf: class NoneOf: values: Collection[Any] - message: str | None + message: _Text | None values_formatter: Callable[[Any], str] @overload - def __init__(self, values: Collection[Any], message: str | None = None, values_formatter: None = None) -> None: ... + def __init__(self, values: Collection[Any], message: _Text | None = None, values_formatter: None = None) -> None: ... @overload def __init__( - self, values: _ValuesT_contra, message: str | None, values_formatter: Callable[[_ValuesT_contra], str] + self, values: _ValuesT_contra, message: _Text | None, values_formatter: Callable[[_ValuesT_contra], str] ) -> None: ... @overload def __init__( - self, values: _ValuesT_contra, message: str | None = None, *, values_formatter: Callable[[_ValuesT_contra], str] + self, values: _ValuesT_contra, message: _Text | None = None, *, values_formatter: Callable[[_ValuesT_contra], str] ) -> None: ... def __call__(self, form: BaseForm, field: Field) -> None: ...