Skip to content

Commit

Permalink
update type annotation
Browse files Browse the repository at this point in the history
  • Loading branch information
falkoschindler committed Nov 22, 2024
1 parent 27ff2ef commit ee550f0
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 20 deletions.
6 changes: 3 additions & 3 deletions nicegui/elements/input.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from typing import Any, Callable, Dict, List, Optional, Union
from typing import Any, List, Optional, Union

from ..events import Handler, ValueChangeEventArguments
from .icon import Icon
from .mixins.disableable_element import DisableableElement
from .mixins.validation_element import ValidationElement
from .mixins.validation_element import ValidationDict, ValidationElement, ValidationFunction


class Input(ValidationElement, DisableableElement, component='input.js'):
Expand All @@ -18,7 +18,7 @@ def __init__(self,
password_toggle_button: bool = False,
on_change: Optional[Handler[ValueChangeEventArguments]] = None,
autocomplete: Optional[List[str]] = None,
validation: Optional[Union[Callable[..., Optional[str]], Dict[str, Callable[..., bool]]]] = None,
validation: Optional[Union[ValidationFunction, ValidationDict]] = None,
) -> None:
"""Text Input
Expand Down
18 changes: 6 additions & 12 deletions nicegui/elements/mixins/validation_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,26 @@
from ...helpers import is_coroutine_function
from .value_element import ValueElement

ValidationFunction = Callable[[Any], Union[Optional[str], Awaitable[Optional[str]]]]
ValidationDict = Dict[str, Callable[[Any], bool]]


class ValidationElement(ValueElement):

def __init__(self, validation: Optional[Union[
Callable[..., Union[Optional[str], Awaitable[Optional[str]]]],
Dict[str, Callable[..., bool]],
]], **kwargs: Any) -> None:
def __init__(self, validation: Optional[Union[ValidationFunction, ValidationDict]], **kwargs: Any) -> None:
self._validation = validation
self._auto_validation = True
self._error: Optional[str] = None
super().__init__(**kwargs)
self._props['error'] = None if validation is None else False # NOTE: reserve bottom space for error message

@property
def validation(self) -> Optional[Union[
Callable[..., Union[Optional[str], Awaitable[Optional[str]]]],
Dict[str, Callable[..., bool]],
]]:
def validation(self) -> Optional[Union[ValidationFunction, ValidationDict]]:
"""The validation function or dictionary of validation functions."""
return self._validation

@validation.setter
def validation(self, validation: Optional[Union[
Callable[..., Union[Optional[str], Awaitable[Optional[str]]]],
Dict[str, Callable[..., bool]],
]]) -> None:
def validation(self, validation: Optional[Union[ValidationFunction, ValidationDict]]) -> None:
"""Sets the validation function or dictionary of validation functions.
:param validation: validation function or dictionary of validation functions (``None`` to disable validation)
Expand Down
6 changes: 3 additions & 3 deletions nicegui/elements/number.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from typing import Any, Callable, Dict, Optional, Union
from typing import Any, Optional, Union

from ..events import GenericEventArguments, Handler, ValueChangeEventArguments
from .mixins.disableable_element import DisableableElement
from .mixins.validation_element import ValidationElement
from .mixins.validation_element import ValidationDict, ValidationElement, ValidationFunction


class Number(ValidationElement, DisableableElement):
Expand All @@ -20,7 +20,7 @@ def __init__(self,
suffix: Optional[str] = None,
format: Optional[str] = None, # pylint: disable=redefined-builtin
on_change: Optional[Handler[ValueChangeEventArguments]] = None,
validation: Optional[Union[Callable[..., Optional[str]], Dict[str, Callable[..., bool]]]] = None,
validation: Optional[Union[ValidationFunction, ValidationDict]] = None,
) -> None:
"""Number Input
Expand Down
4 changes: 2 additions & 2 deletions nicegui/elements/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from ..events import GenericEventArguments, Handler, ValueChangeEventArguments
from .choice_element import ChoiceElement
from .mixins.disableable_element import DisableableElement
from .mixins.validation_element import ValidationElement
from .mixins.validation_element import ValidationDict, ValidationElement, ValidationFunction


class Select(ValidationElement, ChoiceElement, DisableableElement, component='select.js'):
Expand All @@ -19,7 +19,7 @@ def __init__(self,
new_value_mode: Optional[Literal['add', 'add-unique', 'toggle']] = None,
multiple: bool = False,
clearable: bool = False,
validation: Optional[Union[Callable[..., Optional[str]], Dict[str, Callable[..., bool]]]] = None,
validation: Optional[Union[ValidationFunction, ValidationDict]] = None,
key_generator: Optional[Union[Callable[[Any], Any], Iterator[Any]]] = None,
) -> None:
"""Dropdown Selection
Expand Down

0 comments on commit ee550f0

Please sign in to comment.