improve var create typing (#4701)

This commit is contained in:
Khaleel Al-Adhami 2025-01-28 22:56:38 -08:00 committed by GitHub
parent 58f87a6aa7
commit 5beea25b31
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 57 additions and 5 deletions

View File

@ -196,8 +196,9 @@ class AccordionItem(AccordionComponent):
# The header of the accordion item.
header: Var[Union[Component, str]]
# The content of the accordion item.
content: Var[Union[Component, str]] = Var.create(None)
content: Var[Union[Component, str, None]] = Var.create(None)
_valid_children: List[str] = [
"AccordionHeader",

View File

@ -308,7 +308,9 @@ class AccordionItem(AccordionComponent):
value: Optional[Union[Var[str], str]] = None,
disabled: Optional[Union[Var[bool], bool]] = None,
header: Optional[Union[Component, Var[Union[Component, str]], str]] = None,
content: Optional[Union[Component, Var[Union[Component, str]], str]] = None,
content: Optional[
Union[Component, Var[Optional[Union[Component, str]]], str]
] = None,
color_scheme: Optional[
Union[
Literal[

View File

@ -80,6 +80,7 @@ if TYPE_CHECKING:
VAR_TYPE = TypeVar("VAR_TYPE", covariant=True)
OTHER_VAR_TYPE = TypeVar("OTHER_VAR_TYPE")
STRING_T = TypeVar("STRING_T", bound=str)
warnings.filterwarnings("ignore", message="fields may not start with an underscore")
@ -550,12 +551,60 @@ class Var(Generic[VAR_TYPE]):
return value_with_replaced
@overload
@classmethod
def create( # type: ignore[override]
cls,
value: bool,
_var_data: VarData | None = None,
) -> BooleanVar: ...
@overload
@classmethod
def create( # type: ignore[override]
cls,
value: int,
_var_data: VarData | None = None,
) -> NumberVar[int]: ...
@overload
@classmethod
def create(
cls,
value: Any,
value: float,
_var_data: VarData | None = None,
) -> Var:
) -> NumberVar[float]: ...
@overload
@classmethod
def create(
cls,
value: STRING_T,
_var_data: VarData | None = None,
) -> StringVar[STRING_T]: ...
@overload
@classmethod
def create(
cls,
value: None,
_var_data: VarData | None = None,
) -> NoneVar: ...
@overload
@classmethod
def create(
cls,
value: OTHER_VAR_TYPE,
_var_data: VarData | None = None,
) -> Var[OTHER_VAR_TYPE]: ...
@classmethod
def create(
cls,
value: OTHER_VAR_TYPE,
_var_data: VarData | None = None,
) -> Var[OTHER_VAR_TYPE]:
"""Create a var from a value.
Args:

View File

@ -31,7 +31,7 @@ from .base import (
var_operation_return,
)
NUMBER_T = TypeVar("NUMBER_T", int, float, Union[int, float], bool)
NUMBER_T = TypeVar("NUMBER_T", int, float, bool)
if TYPE_CHECKING:
from .sequence import ArrayVar