[REF-3568][REF-3569]Remove deprecations (#3852)
* Remove deprecations * remove prop conversion * fix tests * fix slight issue * fix darglint
This commit is contained in:
parent
4d9f427b19
commit
e6080a7707
@ -45,7 +45,7 @@ from reflex.event import (
|
|||||||
)
|
)
|
||||||
from reflex.ivars.base import ImmutableVar, LiteralVar
|
from reflex.ivars.base import ImmutableVar, LiteralVar
|
||||||
from reflex.style import Style, format_as_emotion
|
from reflex.style import Style, format_as_emotion
|
||||||
from reflex.utils import console, format, imports, types
|
from reflex.utils import format, imports, types
|
||||||
from reflex.utils.imports import ImportDict, ImportVar, ParsedImportDict, parse_imports
|
from reflex.utils.imports import ImportDict, ImportVar, ParsedImportDict, parse_imports
|
||||||
from reflex.utils.serializers import serializer
|
from reflex.utils.serializers import serializer
|
||||||
from reflex.vars import BaseVar, ImmutableVarData, Var, VarData
|
from reflex.vars import BaseVar, ImmutableVarData, Var, VarData
|
||||||
@ -636,27 +636,6 @@ class Component(BaseComponent, ABC):
|
|||||||
|
|
||||||
return _compile_component(self)
|
return _compile_component(self)
|
||||||
|
|
||||||
def _apply_theme(self, theme: Optional[Component]):
|
|
||||||
"""Apply the theme to this component.
|
|
||||||
|
|
||||||
Deprecated. Use add_style instead.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
theme: The theme to apply.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def apply_theme(self, theme: Optional[Component]):
|
|
||||||
"""Apply a theme to the component and its children.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
theme: The theme to apply.
|
|
||||||
"""
|
|
||||||
self._apply_theme(theme)
|
|
||||||
for child in self.children:
|
|
||||||
if isinstance(child, Component):
|
|
||||||
child.apply_theme(theme)
|
|
||||||
|
|
||||||
def _exclude_props(self) -> list[str]:
|
def _exclude_props(self) -> list[str]:
|
||||||
"""Props to exclude when adding the component props to the Tag.
|
"""Props to exclude when adding the component props to the Tag.
|
||||||
|
|
||||||
@ -764,22 +743,6 @@ class Component(BaseComponent, ABC):
|
|||||||
from reflex.components.base.fragment import Fragment
|
from reflex.components.base.fragment import Fragment
|
||||||
from reflex.utils.exceptions import ComponentTypeError
|
from reflex.utils.exceptions import ComponentTypeError
|
||||||
|
|
||||||
# Translate deprecated props to new names.
|
|
||||||
new_prop_names = [
|
|
||||||
prop for prop in cls.get_props() if prop in ["type", "min", "max"]
|
|
||||||
]
|
|
||||||
for prop in new_prop_names:
|
|
||||||
under_prop = f"{prop}_"
|
|
||||||
if under_prop in props:
|
|
||||||
console.deprecate(
|
|
||||||
f"Underscore suffix for prop `{under_prop}`",
|
|
||||||
reason=f"for consistency. Use `{prop}` instead.",
|
|
||||||
deprecation_version="0.4.0",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
dedupe=False,
|
|
||||||
)
|
|
||||||
props[prop] = props.pop(under_prop)
|
|
||||||
|
|
||||||
# Filter out None props
|
# Filter out None props
|
||||||
props = {key: value for key, value in props.items() if value is not None}
|
props = {key: value for key, value in props.items() if value is not None}
|
||||||
|
|
||||||
@ -896,17 +859,6 @@ class Component(BaseComponent, ABC):
|
|||||||
new_style.update(component_style)
|
new_style.update(component_style)
|
||||||
style_vars.append(component_style._var_data)
|
style_vars.append(component_style._var_data)
|
||||||
|
|
||||||
# 3. User-defined style from `Component.style`.
|
|
||||||
# Apply theme for retro-compatibility with deprecated _apply_theme API
|
|
||||||
if type(self)._apply_theme != Component._apply_theme:
|
|
||||||
console.deprecate(
|
|
||||||
f"{self.__class__.__name__}._apply_theme",
|
|
||||||
reason="use add_style instead",
|
|
||||||
deprecation_version="0.5.0",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
self._apply_theme(theme)
|
|
||||||
|
|
||||||
# 4. style dict and css props passed to the component instance.
|
# 4. style dict and css props passed to the component instance.
|
||||||
new_style.update(self.style)
|
new_style.update(self.style)
|
||||||
style_vars.append(self.style._var_data)
|
style_vars.append(self.style._var_data)
|
||||||
|
@ -11,7 +11,6 @@ from reflex.components.tags import IterTag
|
|||||||
from reflex.constants import MemoizationMode
|
from reflex.constants import MemoizationMode
|
||||||
from reflex.ivars.base import ImmutableVar
|
from reflex.ivars.base import ImmutableVar
|
||||||
from reflex.state import ComponentState
|
from reflex.state import ComponentState
|
||||||
from reflex.utils import console
|
|
||||||
from reflex.vars import Var
|
from reflex.vars import Var
|
||||||
|
|
||||||
|
|
||||||
@ -39,14 +38,12 @@ class Foreach(Component):
|
|||||||
cls,
|
cls,
|
||||||
iterable: Var[Iterable] | Iterable,
|
iterable: Var[Iterable] | Iterable,
|
||||||
render_fn: Callable,
|
render_fn: Callable,
|
||||||
**props,
|
|
||||||
) -> Foreach:
|
) -> Foreach:
|
||||||
"""Create a foreach component.
|
"""Create a foreach component.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
iterable: The iterable to create components from.
|
iterable: The iterable to create components from.
|
||||||
render_fn: A function from the render args to the component.
|
render_fn: A function from the render args to the component.
|
||||||
**props: The attributes to pass to each child component (deprecated).
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
The foreach component.
|
The foreach component.
|
||||||
@ -55,13 +52,6 @@ class Foreach(Component):
|
|||||||
ForeachVarError: If the iterable is of type Any.
|
ForeachVarError: If the iterable is of type Any.
|
||||||
TypeError: If the render function is a ComponentState.
|
TypeError: If the render function is a ComponentState.
|
||||||
"""
|
"""
|
||||||
if props:
|
|
||||||
console.deprecate(
|
|
||||||
feature_name="Passing props to rx.foreach",
|
|
||||||
reason="it does not have the intended effect and may be confusing",
|
|
||||||
deprecation_version="0.5.0",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
iterable = ImmutableVar.create_safe(iterable)
|
iterable = ImmutableVar.create_safe(iterable)
|
||||||
if iterable._var_type == Any:
|
if iterable._var_type == Any:
|
||||||
raise ForeachVarError(
|
raise ForeachVarError(
|
||||||
|
@ -10,7 +10,6 @@ _SUBMODULES: set[str] = {"elements"}
|
|||||||
_SUBMOD_ATTRS: dict[str, list[str]] = {
|
_SUBMOD_ATTRS: dict[str, list[str]] = {
|
||||||
f"elements.{k}": v for k, v in elements._MAPPING.items()
|
f"elements.{k}": v for k, v in elements._MAPPING.items()
|
||||||
}
|
}
|
||||||
_PYRIGHT_IGNORE_IMPORTS = elements._PYRIGHT_IGNORE_IMPORTS
|
|
||||||
|
|
||||||
__getattr__, __dir__, __all__ = lazy_loader.attach(
|
__getattr__, __dir__, __all__ = lazy_loader.attach(
|
||||||
__name__,
|
__name__,
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# This file was generated by `reflex/utils/pyi_generator.py`!
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
|
|
||||||
from . import elements
|
|
||||||
from .elements.forms import Button as Button
|
from .elements.forms import Button as Button
|
||||||
from .elements.forms import Fieldset as Fieldset
|
from .elements.forms import Fieldset as Fieldset
|
||||||
from .elements.forms import Form as Form
|
from .elements.forms import Form as Form
|
||||||
@ -88,36 +87,28 @@ from .elements.inline import u as u
|
|||||||
from .elements.inline import wbr as wbr
|
from .elements.inline import wbr as wbr
|
||||||
from .elements.media import Area as Area
|
from .elements.media import Area as Area
|
||||||
from .elements.media import Audio as Audio
|
from .elements.media import Audio as Audio
|
||||||
from .elements.media import Defs as Defs
|
|
||||||
from .elements.media import Embed as Embed
|
from .elements.media import Embed as Embed
|
||||||
from .elements.media import Iframe as Iframe
|
from .elements.media import Iframe as Iframe
|
||||||
from .elements.media import Img as Img
|
from .elements.media import Img as Img
|
||||||
from .elements.media import LinearGradient as LinearGradient
|
|
||||||
from .elements.media import Map as Map
|
from .elements.media import Map as Map
|
||||||
from .elements.media import Object as Object
|
from .elements.media import Object as Object
|
||||||
from .elements.media import Path as Path
|
|
||||||
from .elements.media import Picture as Picture
|
from .elements.media import Picture as Picture
|
||||||
from .elements.media import Portal as Portal
|
from .elements.media import Portal as Portal
|
||||||
from .elements.media import Source as Source
|
from .elements.media import Source as Source
|
||||||
from .elements.media import Stop as Stop
|
|
||||||
from .elements.media import Svg as Svg
|
from .elements.media import Svg as Svg
|
||||||
from .elements.media import Track as Track
|
from .elements.media import Track as Track
|
||||||
from .elements.media import Video as Video
|
from .elements.media import Video as Video
|
||||||
from .elements.media import area as area
|
from .elements.media import area as area
|
||||||
from .elements.media import audio as audio
|
from .elements.media import audio as audio
|
||||||
from .elements.media import defs as defs # type: ignore
|
|
||||||
from .elements.media import embed as embed
|
from .elements.media import embed as embed
|
||||||
from .elements.media import iframe as iframe
|
from .elements.media import iframe as iframe
|
||||||
from .elements.media import image as image
|
from .elements.media import image as image
|
||||||
from .elements.media import img as img
|
from .elements.media import img as img
|
||||||
from .elements.media import lineargradient as lineargradient # type: ignore
|
|
||||||
from .elements.media import map as map
|
from .elements.media import map as map
|
||||||
from .elements.media import object as object
|
from .elements.media import object as object
|
||||||
from .elements.media import path as path # type: ignore
|
|
||||||
from .elements.media import picture as picture
|
from .elements.media import picture as picture
|
||||||
from .elements.media import portal as portal
|
from .elements.media import portal as portal
|
||||||
from .elements.media import source as source
|
from .elements.media import source as source
|
||||||
from .elements.media import stop as stop # type: ignore
|
|
||||||
from .elements.media import svg as svg
|
from .elements.media import svg as svg
|
||||||
from .elements.media import track as track
|
from .elements.media import track as track
|
||||||
from .elements.media import video as video
|
from .elements.media import video as video
|
||||||
@ -231,5 +222,3 @@ from .elements.typography import ol as ol
|
|||||||
from .elements.typography import p as p
|
from .elements.typography import p as p
|
||||||
from .elements.typography import pre as pre
|
from .elements.typography import pre as pre
|
||||||
from .elements.typography import ul as ul
|
from .elements.typography import ul as ul
|
||||||
|
|
||||||
_PYRIGHT_IGNORE_IMPORTS = elements._PYRIGHT_IGNORE_IMPORTS
|
|
||||||
|
@ -65,11 +65,6 @@ _MAPPING = {
|
|||||||
"portal",
|
"portal",
|
||||||
"source",
|
"source",
|
||||||
"svg",
|
"svg",
|
||||||
"defs",
|
|
||||||
"lineargradient",
|
|
||||||
"LinearGradient",
|
|
||||||
"stop",
|
|
||||||
"path",
|
|
||||||
],
|
],
|
||||||
"metadata": [
|
"metadata": [
|
||||||
"base",
|
"base",
|
||||||
@ -130,13 +125,12 @@ _MAPPING = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EXCLUDE = ["del_", "Del", "image", "lineargradient", "LinearGradient"]
|
EXCLUDE = ["del_", "Del", "image"]
|
||||||
for _, v in _MAPPING.items():
|
for _, v in _MAPPING.items():
|
||||||
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
|
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
|
||||||
|
|
||||||
_SUBMOD_ATTRS: dict[str, list[str]] = _MAPPING
|
_SUBMOD_ATTRS: dict[str, list[str]] = _MAPPING
|
||||||
|
|
||||||
_PYRIGHT_IGNORE_IMPORTS = ["stop", "lineargradient", "path", "defs"]
|
|
||||||
__getattr__, __dir__, __all__ = lazy_loader.attach(
|
__getattr__, __dir__, __all__ = lazy_loader.attach(
|
||||||
__name__,
|
__name__,
|
||||||
submod_attrs=_SUBMOD_ATTRS,
|
submod_attrs=_SUBMOD_ATTRS,
|
||||||
|
@ -87,36 +87,28 @@ from .inline import u as u
|
|||||||
from .inline import wbr as wbr
|
from .inline import wbr as wbr
|
||||||
from .media import Area as Area
|
from .media import Area as Area
|
||||||
from .media import Audio as Audio
|
from .media import Audio as Audio
|
||||||
from .media import Defs as Defs
|
|
||||||
from .media import Embed as Embed
|
from .media import Embed as Embed
|
||||||
from .media import Iframe as Iframe
|
from .media import Iframe as Iframe
|
||||||
from .media import Img as Img
|
from .media import Img as Img
|
||||||
from .media import LinearGradient as LinearGradient
|
|
||||||
from .media import Map as Map
|
from .media import Map as Map
|
||||||
from .media import Object as Object
|
from .media import Object as Object
|
||||||
from .media import Path as Path
|
|
||||||
from .media import Picture as Picture
|
from .media import Picture as Picture
|
||||||
from .media import Portal as Portal
|
from .media import Portal as Portal
|
||||||
from .media import Source as Source
|
from .media import Source as Source
|
||||||
from .media import Stop as Stop
|
|
||||||
from .media import Svg as Svg
|
from .media import Svg as Svg
|
||||||
from .media import Track as Track
|
from .media import Track as Track
|
||||||
from .media import Video as Video
|
from .media import Video as Video
|
||||||
from .media import area as area
|
from .media import area as area
|
||||||
from .media import audio as audio
|
from .media import audio as audio
|
||||||
from .media import defs as defs # type: ignore
|
|
||||||
from .media import embed as embed
|
from .media import embed as embed
|
||||||
from .media import iframe as iframe
|
from .media import iframe as iframe
|
||||||
from .media import image as image
|
from .media import image as image
|
||||||
from .media import img as img
|
from .media import img as img
|
||||||
from .media import lineargradient as lineargradient # type: ignore
|
|
||||||
from .media import map as map
|
from .media import map as map
|
||||||
from .media import object as object
|
from .media import object as object
|
||||||
from .media import path as path # type: ignore
|
|
||||||
from .media import picture as picture
|
from .media import picture as picture
|
||||||
from .media import portal as portal
|
from .media import portal as portal
|
||||||
from .media import source as source
|
from .media import source as source
|
||||||
from .media import stop as stop # type: ignore
|
|
||||||
from .media import svg as svg
|
from .media import svg as svg
|
||||||
from .media import track as track
|
from .media import track as track
|
||||||
from .media import video as video
|
from .media import video as video
|
||||||
@ -292,11 +284,6 @@ _MAPPING = {
|
|||||||
"portal",
|
"portal",
|
||||||
"source",
|
"source",
|
||||||
"svg",
|
"svg",
|
||||||
"defs",
|
|
||||||
"lineargradient",
|
|
||||||
"LinearGradient",
|
|
||||||
"stop",
|
|
||||||
"path",
|
|
||||||
],
|
],
|
||||||
"metadata": ["base", "head", "link", "meta", "title", "style"],
|
"metadata": ["base", "head", "link", "meta", "title", "style"],
|
||||||
"other": ["details", "dialog", "summary", "slot", "template", "math", "html"],
|
"other": ["details", "dialog", "summary", "slot", "template", "math", "html"],
|
||||||
@ -348,7 +335,6 @@ _MAPPING = {
|
|||||||
"Del",
|
"Del",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
EXCLUDE = ["del_", "Del", "image", "lineargradient", "LinearGradient"]
|
EXCLUDE = ["del_", "Del", "image"]
|
||||||
for _, v in _MAPPING.items():
|
for _, v in _MAPPING.items():
|
||||||
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
|
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
|
||||||
_PYRIGHT_IGNORE_IMPORTS = ["stop", "lineargradient", "path", "defs"]
|
|
||||||
|
@ -4,7 +4,6 @@ from typing import Any, Union
|
|||||||
|
|
||||||
from reflex import Component, ComponentNamespace
|
from reflex import Component, ComponentNamespace
|
||||||
from reflex.constants.colors import Color
|
from reflex.constants.colors import Color
|
||||||
from reflex.utils import console
|
|
||||||
from reflex.vars import Var as Var
|
from reflex.vars import Var as Var
|
||||||
|
|
||||||
from .base import BaseHTML
|
from .base import BaseHTML
|
||||||
@ -445,23 +444,3 @@ picture = Picture.create
|
|||||||
portal = Portal.create
|
portal = Portal.create
|
||||||
source = Source.create
|
source = Source.create
|
||||||
svg = SVG()
|
svg = SVG()
|
||||||
|
|
||||||
|
|
||||||
def __getattr__(name: str):
|
|
||||||
if name in ("defs", "lineargradient", "stop", "path"):
|
|
||||||
console.deprecate(
|
|
||||||
f"`rx.el.{name}`",
|
|
||||||
reason=f"use `rx.el.svg.{'linear_gradient' if name =='lineargradient' else name}`",
|
|
||||||
deprecation_version="0.5.8",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
return (
|
|
||||||
LinearGradient.create
|
|
||||||
if name == "lineargradient"
|
|
||||||
else globals()[name.capitalize()].create
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
return globals()[name]
|
|
||||||
except KeyError:
|
|
||||||
raise AttributeError(f"module '{__name__} has no attribute '{name}'") from None
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
"""Lucide Icon component."""
|
"""Lucide Icon component."""
|
||||||
|
|
||||||
from reflex.components.component import Component
|
from reflex.components.component import Component
|
||||||
from reflex.utils import console, format
|
from reflex.utils import format
|
||||||
from reflex.vars import Var
|
from reflex.vars import Var
|
||||||
|
|
||||||
|
|
||||||
@ -36,19 +36,6 @@ class Icon(LucideIconComponent):
|
|||||||
Returns:
|
Returns:
|
||||||
The created component.
|
The created component.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def map_deprecated_icon_names_05(tag: str) -> str:
|
|
||||||
new_tag = RENAMED_ICONS_05.get(tag)
|
|
||||||
if new_tag is not None:
|
|
||||||
console.deprecate(
|
|
||||||
feature_name=f"icon {tag}",
|
|
||||||
reason=f"it was renamed upstream. Use {new_tag} instead.",
|
|
||||||
deprecation_version="0.4.6",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
return new_tag
|
|
||||||
return tag
|
|
||||||
|
|
||||||
if children:
|
if children:
|
||||||
if len(children) == 1 and isinstance(children[0], str):
|
if len(children) == 1 and isinstance(children[0], str):
|
||||||
props["tag"] = children[0]
|
props["tag"] = children[0]
|
||||||
@ -62,8 +49,7 @@ class Icon(LucideIconComponent):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
not isinstance(props["tag"], str)
|
not isinstance(props["tag"], str)
|
||||||
or map_deprecated_icon_names_05(format.to_snake_case(props["tag"]))
|
or format.to_snake_case(props["tag"]) not in LUCIDE_ICON_LIST
|
||||||
not in LUCIDE_ICON_LIST
|
|
||||||
):
|
):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Invalid icon tag: {props['tag']}. Please use one of the following: {', '.join(LUCIDE_ICON_LIST[0:25])}, ..."
|
f"Invalid icon tag: {props['tag']}. Please use one of the following: {', '.join(LUCIDE_ICON_LIST[0:25])}, ..."
|
||||||
@ -76,116 +62,6 @@ class Icon(LucideIconComponent):
|
|||||||
return super().create(*children, **props)
|
return super().create(*children, **props)
|
||||||
|
|
||||||
|
|
||||||
RENAMED_ICONS_05 = {
|
|
||||||
"activity_square": "square_activity",
|
|
||||||
"alert_circle": "circle_alert",
|
|
||||||
"alert_octagon": "octagon_alert",
|
|
||||||
"alert_triangle": "triangle_alert",
|
|
||||||
"arrow_down_circle": "circle_arrow_down",
|
|
||||||
"arrow_down_left_from_circle": "circle_arrow_out_down_left",
|
|
||||||
"arrow_down_left_from_square": "square_arrow_out_down_left",
|
|
||||||
"arrow_down_left_square": "square_arrow_down_left",
|
|
||||||
"arrow_down_right_from_circle": "circle_arrow_out_down_right",
|
|
||||||
"arrow_down_right_from_square": "square_arrow_out_down_right",
|
|
||||||
"arrow_down_right_square": "square_arrow_down_right",
|
|
||||||
"arrow_down_square": "square_arrow_down",
|
|
||||||
"arrow_left_circle": "circle_arrow_left",
|
|
||||||
"arrow_left_square": "square_arrow_left",
|
|
||||||
"arrow_right_circle": "circle_arrow_right",
|
|
||||||
"arrow_right_square": "square_arrow_right",
|
|
||||||
"arrow_up_circle": "circle_arrow_up",
|
|
||||||
"arrow_up_left_from_circle": "circle_arrow_out_up_left",
|
|
||||||
"arrow_up_left_from_square": "square_arrow_out_up_left",
|
|
||||||
"arrow_up_left_square": "square_arrow_up_left",
|
|
||||||
"arrow_up_right_from_circle": "circle_arrow_out_up_right",
|
|
||||||
"arrow_up_right_from_square": "square_arrow_out_up_right",
|
|
||||||
"arrow_up_right_square": "square_arrow_up_right",
|
|
||||||
"arrow_up_square": "square_arrow_up",
|
|
||||||
"asterisk_square": "square_asterisk",
|
|
||||||
"check_circle": "circle_check_big",
|
|
||||||
"check_circle_2": "circle_check",
|
|
||||||
"check_square": "square_check_big",
|
|
||||||
"check_square_2": "square_check",
|
|
||||||
"chevron_down_circle": "circle_chevron_down",
|
|
||||||
"chevron_down_square": "square_chevron_down",
|
|
||||||
"chevron_left_circle": "circle_chevron_left",
|
|
||||||
"chevron_left_square": "square_chevron_left",
|
|
||||||
"chevron_right_circle": "circle_chevron_right",
|
|
||||||
"chevron_right_square": "square_chevron_right",
|
|
||||||
"chevron_up_circle": "circle_chevron_up",
|
|
||||||
"chevron_up_square": "square_chevron_up",
|
|
||||||
"code_2": "code_xml",
|
|
||||||
"code_square": "square_code",
|
|
||||||
"contact_2": "contact_round",
|
|
||||||
"divide_circle": "circle_divide",
|
|
||||||
"divide_square": "square_divide",
|
|
||||||
"dot_square": "square_dot",
|
|
||||||
"download_cloud": "cloud_download",
|
|
||||||
"equal_square": "square_equal",
|
|
||||||
"form_input": "rectangle_ellipsis",
|
|
||||||
"function_square": "square_function",
|
|
||||||
"gantt_chart_square": "square_gantt_chart",
|
|
||||||
"gauge_circle": "circle_gauge",
|
|
||||||
"globe_2": "earth",
|
|
||||||
"help_circle": "circle_help",
|
|
||||||
"helping_hand": "hand_helping",
|
|
||||||
"ice_cream": "ice_cream_cone",
|
|
||||||
"ice_cream_2": "ice_cream_bowl",
|
|
||||||
"indent": "indent_increase",
|
|
||||||
"kanban_square": "square_kanban",
|
|
||||||
"kanban_square_dashed": "square_dashed_kanban",
|
|
||||||
"laptop_2": "laptop_minimal",
|
|
||||||
"library_square": "square_library",
|
|
||||||
"loader_2": "loader_circle",
|
|
||||||
"m_square": "square_m",
|
|
||||||
"menu_square": "square_menu",
|
|
||||||
"mic_2": "mic_vocal",
|
|
||||||
"minus_circle": "circle_minus",
|
|
||||||
"minus_square": "square_minus",
|
|
||||||
"more_horizontal": "ellipsis",
|
|
||||||
"more_vertical": "ellipsis_vertical",
|
|
||||||
"mouse_pointer_square": "square_mouse_pointer",
|
|
||||||
"mouse_pointer_square_dashed": "square_dashed_mouse_pointer",
|
|
||||||
"outdent": "indent_decrease",
|
|
||||||
"palm_tree": "tree_palm",
|
|
||||||
"parking_circle": "circle_parking",
|
|
||||||
"parking_circle_off": "circle_parking_off",
|
|
||||||
"parking_square": "square_parking",
|
|
||||||
"parking_square_off": "square_parking_off",
|
|
||||||
"pause_circle": "circle_pause",
|
|
||||||
"pause_octagon": "octagon_pause",
|
|
||||||
"percent_circle": "circle_percent",
|
|
||||||
"percent_diamond": "diamond_percent",
|
|
||||||
"percent_square": "square_percent",
|
|
||||||
"pi_square": "square_pi",
|
|
||||||
"pilcrow_square": "square_pilcrow",
|
|
||||||
"play_circle": "circle_play",
|
|
||||||
"play_square": "square_play",
|
|
||||||
"plus_circle": "circle_plus",
|
|
||||||
"plus_square": "square_plus",
|
|
||||||
"power_circle": "circle_power",
|
|
||||||
"power_square": "square_power",
|
|
||||||
"school_2": "university",
|
|
||||||
"scissors_square": "square_scissors",
|
|
||||||
"scissors_square_dashed_bottom": "square_bottom_dashed_scissors",
|
|
||||||
"sigma_square": "square_sigma",
|
|
||||||
"slash_circle": "circle_slash",
|
|
||||||
"sliders": "sliders_vertical",
|
|
||||||
"split_square_horizontal": "square_split_horizontal",
|
|
||||||
"split_square_vertical": "square_split_vertical",
|
|
||||||
"stop_circle": "circle_stop",
|
|
||||||
"subtitles": "captions",
|
|
||||||
"test_tube_2": "test_tube_diagonal",
|
|
||||||
"unlock": "lock_open",
|
|
||||||
"unlock_keyhole": "lock_keyhole_open",
|
|
||||||
"upload_cloud": "cloud_upload",
|
|
||||||
"wallet_2": "wallet_minimal",
|
|
||||||
"wand_2": "wand_sparkles",
|
|
||||||
"x_circle": "circle_x",
|
|
||||||
"x_octagon": "octagon_x",
|
|
||||||
"x_square": "square_x",
|
|
||||||
}
|
|
||||||
|
|
||||||
LUCIDE_ICON_LIST = [
|
LUCIDE_ICON_LIST = [
|
||||||
"a_arrow_down",
|
"a_arrow_down",
|
||||||
"a_arrow_up",
|
"a_arrow_up",
|
||||||
|
@ -150,115 +150,6 @@ class Icon(LucideIconComponent):
|
|||||||
"""
|
"""
|
||||||
...
|
...
|
||||||
|
|
||||||
RENAMED_ICONS_05 = {
|
|
||||||
"activity_square": "square_activity",
|
|
||||||
"alert_circle": "circle_alert",
|
|
||||||
"alert_octagon": "octagon_alert",
|
|
||||||
"alert_triangle": "triangle_alert",
|
|
||||||
"arrow_down_circle": "circle_arrow_down",
|
|
||||||
"arrow_down_left_from_circle": "circle_arrow_out_down_left",
|
|
||||||
"arrow_down_left_from_square": "square_arrow_out_down_left",
|
|
||||||
"arrow_down_left_square": "square_arrow_down_left",
|
|
||||||
"arrow_down_right_from_circle": "circle_arrow_out_down_right",
|
|
||||||
"arrow_down_right_from_square": "square_arrow_out_down_right",
|
|
||||||
"arrow_down_right_square": "square_arrow_down_right",
|
|
||||||
"arrow_down_square": "square_arrow_down",
|
|
||||||
"arrow_left_circle": "circle_arrow_left",
|
|
||||||
"arrow_left_square": "square_arrow_left",
|
|
||||||
"arrow_right_circle": "circle_arrow_right",
|
|
||||||
"arrow_right_square": "square_arrow_right",
|
|
||||||
"arrow_up_circle": "circle_arrow_up",
|
|
||||||
"arrow_up_left_from_circle": "circle_arrow_out_up_left",
|
|
||||||
"arrow_up_left_from_square": "square_arrow_out_up_left",
|
|
||||||
"arrow_up_left_square": "square_arrow_up_left",
|
|
||||||
"arrow_up_right_from_circle": "circle_arrow_out_up_right",
|
|
||||||
"arrow_up_right_from_square": "square_arrow_out_up_right",
|
|
||||||
"arrow_up_right_square": "square_arrow_up_right",
|
|
||||||
"arrow_up_square": "square_arrow_up",
|
|
||||||
"asterisk_square": "square_asterisk",
|
|
||||||
"check_circle": "circle_check_big",
|
|
||||||
"check_circle_2": "circle_check",
|
|
||||||
"check_square": "square_check_big",
|
|
||||||
"check_square_2": "square_check",
|
|
||||||
"chevron_down_circle": "circle_chevron_down",
|
|
||||||
"chevron_down_square": "square_chevron_down",
|
|
||||||
"chevron_left_circle": "circle_chevron_left",
|
|
||||||
"chevron_left_square": "square_chevron_left",
|
|
||||||
"chevron_right_circle": "circle_chevron_right",
|
|
||||||
"chevron_right_square": "square_chevron_right",
|
|
||||||
"chevron_up_circle": "circle_chevron_up",
|
|
||||||
"chevron_up_square": "square_chevron_up",
|
|
||||||
"code_2": "code_xml",
|
|
||||||
"code_square": "square_code",
|
|
||||||
"contact_2": "contact_round",
|
|
||||||
"divide_circle": "circle_divide",
|
|
||||||
"divide_square": "square_divide",
|
|
||||||
"dot_square": "square_dot",
|
|
||||||
"download_cloud": "cloud_download",
|
|
||||||
"equal_square": "square_equal",
|
|
||||||
"form_input": "rectangle_ellipsis",
|
|
||||||
"function_square": "square_function",
|
|
||||||
"gantt_chart_square": "square_gantt_chart",
|
|
||||||
"gauge_circle": "circle_gauge",
|
|
||||||
"globe_2": "earth",
|
|
||||||
"help_circle": "circle_help",
|
|
||||||
"helping_hand": "hand_helping",
|
|
||||||
"ice_cream": "ice_cream_cone",
|
|
||||||
"ice_cream_2": "ice_cream_bowl",
|
|
||||||
"indent": "indent_increase",
|
|
||||||
"kanban_square": "square_kanban",
|
|
||||||
"kanban_square_dashed": "square_dashed_kanban",
|
|
||||||
"laptop_2": "laptop_minimal",
|
|
||||||
"library_square": "square_library",
|
|
||||||
"loader_2": "loader_circle",
|
|
||||||
"m_square": "square_m",
|
|
||||||
"menu_square": "square_menu",
|
|
||||||
"mic_2": "mic_vocal",
|
|
||||||
"minus_circle": "circle_minus",
|
|
||||||
"minus_square": "square_minus",
|
|
||||||
"more_horizontal": "ellipsis",
|
|
||||||
"more_vertical": "ellipsis_vertical",
|
|
||||||
"mouse_pointer_square": "square_mouse_pointer",
|
|
||||||
"mouse_pointer_square_dashed": "square_dashed_mouse_pointer",
|
|
||||||
"outdent": "indent_decrease",
|
|
||||||
"palm_tree": "tree_palm",
|
|
||||||
"parking_circle": "circle_parking",
|
|
||||||
"parking_circle_off": "circle_parking_off",
|
|
||||||
"parking_square": "square_parking",
|
|
||||||
"parking_square_off": "square_parking_off",
|
|
||||||
"pause_circle": "circle_pause",
|
|
||||||
"pause_octagon": "octagon_pause",
|
|
||||||
"percent_circle": "circle_percent",
|
|
||||||
"percent_diamond": "diamond_percent",
|
|
||||||
"percent_square": "square_percent",
|
|
||||||
"pi_square": "square_pi",
|
|
||||||
"pilcrow_square": "square_pilcrow",
|
|
||||||
"play_circle": "circle_play",
|
|
||||||
"play_square": "square_play",
|
|
||||||
"plus_circle": "circle_plus",
|
|
||||||
"plus_square": "square_plus",
|
|
||||||
"power_circle": "circle_power",
|
|
||||||
"power_square": "square_power",
|
|
||||||
"school_2": "university",
|
|
||||||
"scissors_square": "square_scissors",
|
|
||||||
"scissors_square_dashed_bottom": "square_bottom_dashed_scissors",
|
|
||||||
"sigma_square": "square_sigma",
|
|
||||||
"slash_circle": "circle_slash",
|
|
||||||
"sliders": "sliders_vertical",
|
|
||||||
"split_square_horizontal": "square_split_horizontal",
|
|
||||||
"split_square_vertical": "square_split_vertical",
|
|
||||||
"stop_circle": "circle_stop",
|
|
||||||
"subtitles": "captions",
|
|
||||||
"test_tube_2": "test_tube_diagonal",
|
|
||||||
"unlock": "lock_open",
|
|
||||||
"unlock_keyhole": "lock_keyhole_open",
|
|
||||||
"upload_cloud": "cloud_upload",
|
|
||||||
"wallet_2": "wallet_minimal",
|
|
||||||
"wand_2": "wand_sparkles",
|
|
||||||
"x_circle": "circle_x",
|
|
||||||
"x_octagon": "octagon_x",
|
|
||||||
"x_square": "square_x",
|
|
||||||
}
|
|
||||||
LUCIDE_ICON_LIST = [
|
LUCIDE_ICON_LIST = [
|
||||||
"a_arrow_down",
|
"a_arrow_down",
|
||||||
"a_arrow_up",
|
"a_arrow_up",
|
||||||
|
@ -32,7 +32,6 @@ from reflex.style import (
|
|||||||
set_color_mode,
|
set_color_mode,
|
||||||
toggle_color_mode,
|
toggle_color_mode,
|
||||||
)
|
)
|
||||||
from reflex.utils import console
|
|
||||||
from reflex.vars import Var
|
from reflex.vars import Var
|
||||||
|
|
||||||
from .components.icon_button import IconButton
|
from .components.icon_button import IconButton
|
||||||
@ -100,7 +99,6 @@ class ColorModeIconButton(IconButton):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
cls,
|
cls,
|
||||||
*children,
|
|
||||||
position: LiteralPosition | None = None,
|
position: LiteralPosition | None = None,
|
||||||
allow_system: bool = False,
|
allow_system: bool = False,
|
||||||
**props,
|
**props,
|
||||||
@ -108,7 +106,6 @@ class ColorModeIconButton(IconButton):
|
|||||||
"""Create a icon button component that calls toggle_color_mode on click.
|
"""Create a icon button component that calls toggle_color_mode on click.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
*children: The children of the component.
|
|
||||||
position: The position of the icon button. Follow document flow if None.
|
position: The position of the icon button. Follow document flow if None.
|
||||||
allow_system: Allow picking the "system" value for the color mode.
|
allow_system: Allow picking the "system" value for the color mode.
|
||||||
**props: The props to pass to the component.
|
**props: The props to pass to the component.
|
||||||
@ -116,14 +113,6 @@ class ColorModeIconButton(IconButton):
|
|||||||
Returns:
|
Returns:
|
||||||
The button component.
|
The button component.
|
||||||
"""
|
"""
|
||||||
if children:
|
|
||||||
console.deprecate(
|
|
||||||
feature_name="passing children to color_mode.button",
|
|
||||||
reason=", use color_mode_cond and toggle_color_mode instead to build a custom color_mode component",
|
|
||||||
deprecation_version="0.5.0",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
|
|
||||||
# position is used to set nice defaults for positioning the icon button
|
# position is used to set nice defaults for positioning the icon button
|
||||||
if isinstance(position, Var):
|
if isinstance(position, Var):
|
||||||
_set_var_default(props, position, "position", "fixed", position)
|
_set_var_default(props, position, "position", "fixed", position)
|
||||||
|
@ -102,10 +102,6 @@ class ColorModeIconButton(IconButton):
|
|||||||
def create( # type: ignore
|
def create( # type: ignore
|
||||||
cls,
|
cls,
|
||||||
*children,
|
*children,
|
||||||
position: Optional[
|
|
||||||
Literal["top-left", "top-right", "bottom-left", "bottom-right"]
|
|
||||||
] = None,
|
|
||||||
allow_system: Optional[bool] = False,
|
|
||||||
as_child: Optional[Union[Var[bool], bool]] = None,
|
as_child: Optional[Union[Var[bool], bool]] = None,
|
||||||
size: Optional[
|
size: Optional[
|
||||||
Union[
|
Union[
|
||||||
@ -280,7 +276,6 @@ class ColorModeIconButton(IconButton):
|
|||||||
"""Create a icon button component that calls toggle_color_mode on click.
|
"""Create a icon button component that calls toggle_color_mode on click.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
*children: The children of the component.
|
|
||||||
position: The position of the icon button. Follow document flow if None.
|
position: The position of the icon button. Follow document flow if None.
|
||||||
allow_system: Allow picking the "system" value for the color mode.
|
allow_system: Allow picking the "system" value for the color mode.
|
||||||
as_child: Change the default rendered element for the one passed as a child, merging their props and behavior.
|
as_child: Change the default rendered element for the one passed as a child, merging their props and behavior.
|
||||||
|
@ -4,15 +4,11 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import Literal, Union
|
from typing import Literal, Union
|
||||||
|
|
||||||
from reflex.components.base.fragment import Fragment
|
|
||||||
from reflex.components.component import Component, ComponentNamespace
|
from reflex.components.component import Component, ComponentNamespace
|
||||||
from reflex.components.core.breakpoints import Responsive
|
from reflex.components.core.breakpoints import Responsive
|
||||||
from reflex.components.core.debounce import DebounceInput
|
from reflex.components.core.debounce import DebounceInput
|
||||||
from reflex.components.el import elements
|
from reflex.components.el import elements
|
||||||
from reflex.event import EventHandler
|
from reflex.event import EventHandler
|
||||||
from reflex.ivars.base import LiteralVar
|
|
||||||
from reflex.style import Style, format_as_emotion
|
|
||||||
from reflex.utils import console
|
|
||||||
from reflex.vars import Var
|
from reflex.vars import Var
|
||||||
|
|
||||||
from ..base import (
|
from ..base import (
|
||||||
@ -107,80 +103,6 @@ class TextFieldRoot(elements.Div, RadixThemesComponent):
|
|||||||
return DebounceInput.create(component)
|
return DebounceInput.create(component)
|
||||||
return component
|
return component
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def create_root_deprecated(cls, *children, **props) -> Component:
|
|
||||||
"""Create a Fragment component (wrapper for deprecated name).
|
|
||||||
|
|
||||||
Copy the attributes that were previously defined on TextFieldRoot in 0.4.9 to
|
|
||||||
any child input elements (via custom_attrs).
|
|
||||||
|
|
||||||
Args:
|
|
||||||
*children: The children of the component.
|
|
||||||
**props: The properties of the component.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The component.
|
|
||||||
"""
|
|
||||||
console.deprecate(
|
|
||||||
feature_name="rx.input.root",
|
|
||||||
reason="use rx.input without the .root suffix",
|
|
||||||
deprecation_version="0.5.0",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
inputs = [
|
|
||||||
child
|
|
||||||
for child in children
|
|
||||||
if isinstance(child, (TextFieldRoot, DebounceInput))
|
|
||||||
]
|
|
||||||
if not inputs:
|
|
||||||
# Old-style where no explicit child input was provided
|
|
||||||
return cls.create(*children, **props)
|
|
||||||
slots = [child for child in children if isinstance(child, TextFieldSlot)]
|
|
||||||
carry_props = {
|
|
||||||
prop: props.pop(prop)
|
|
||||||
for prop in ["size", "variant", "color_scheme", "radius"]
|
|
||||||
if prop in props
|
|
||||||
}
|
|
||||||
template = cls.create(**props)
|
|
||||||
for child in inputs:
|
|
||||||
child.children.extend(slots)
|
|
||||||
custom_attrs = child.custom_attrs
|
|
||||||
custom_attrs.update(
|
|
||||||
{
|
|
||||||
prop: value
|
|
||||||
for prop, value in carry_props.items()
|
|
||||||
if prop not in custom_attrs and getattr(child, prop) is None
|
|
||||||
}
|
|
||||||
)
|
|
||||||
style = Style(template.style)
|
|
||||||
style.update(child.style)
|
|
||||||
child._get_style = lambda style=style: {
|
|
||||||
"css": LiteralVar.create(format_as_emotion(style))
|
|
||||||
}
|
|
||||||
for trigger in template.event_triggers:
|
|
||||||
if trigger not in child.event_triggers:
|
|
||||||
child.event_triggers[trigger] = template.event_triggers[trigger]
|
|
||||||
return Fragment.create(*inputs)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def create_input_deprecated(cls, *children, **props) -> Component:
|
|
||||||
"""Create a TextFieldRoot component (wrapper for deprecated name).
|
|
||||||
|
|
||||||
Args:
|
|
||||||
*children: The children of the component.
|
|
||||||
**props: The properties of the component.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The component.
|
|
||||||
"""
|
|
||||||
console.deprecate(
|
|
||||||
feature_name="rx.input.input",
|
|
||||||
reason="use rx.input without the .input suffix",
|
|
||||||
deprecation_version="0.5.0",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
return cls.create(*children, **props)
|
|
||||||
|
|
||||||
|
|
||||||
class TextFieldSlot(RadixThemesComponent):
|
class TextFieldSlot(RadixThemesComponent):
|
||||||
"""Contains icons or buttons associated with an Input."""
|
"""Contains icons or buttons associated with an Input."""
|
||||||
@ -194,8 +116,6 @@ class TextFieldSlot(RadixThemesComponent):
|
|||||||
class TextField(ComponentNamespace):
|
class TextField(ComponentNamespace):
|
||||||
"""TextField components namespace."""
|
"""TextField components namespace."""
|
||||||
|
|
||||||
root = staticmethod(TextFieldRoot.create_root_deprecated)
|
|
||||||
input = staticmethod(TextFieldRoot.create_input_deprecated)
|
|
||||||
slot = staticmethod(TextFieldSlot.create)
|
slot = staticmethod(TextFieldSlot.create)
|
||||||
__call__ = staticmethod(TextFieldRoot.create)
|
__call__ = staticmethod(TextFieldRoot.create)
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
from typing import Any, Callable, Dict, Literal, Optional, Union, overload
|
from typing import Any, Callable, Dict, Literal, Optional, Union, overload
|
||||||
|
|
||||||
from reflex.components.component import Component, ComponentNamespace
|
from reflex.components.component import ComponentNamespace
|
||||||
from reflex.components.core.breakpoints import Breakpoints
|
from reflex.components.core.breakpoints import Breakpoints
|
||||||
from reflex.components.el import elements
|
from reflex.components.el import elements
|
||||||
from reflex.event import EventHandler, EventSpec
|
from reflex.event import EventHandler, EventSpec
|
||||||
@ -239,11 +239,6 @@ class TextFieldRoot(elements.Div, RadixThemesComponent):
|
|||||||
"""
|
"""
|
||||||
...
|
...
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def create_root_deprecated(cls, *children, **props) -> Component: ...
|
|
||||||
@classmethod
|
|
||||||
def create_input_deprecated(cls, *children, **props) -> Component: ...
|
|
||||||
|
|
||||||
class TextFieldSlot(RadixThemesComponent):
|
class TextFieldSlot(RadixThemesComponent):
|
||||||
@overload
|
@overload
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -377,8 +372,6 @@ class TextFieldSlot(RadixThemesComponent):
|
|||||||
...
|
...
|
||||||
|
|
||||||
class TextField(ComponentNamespace):
|
class TextField(ComponentNamespace):
|
||||||
root = staticmethod(TextFieldRoot.create_root_deprecated)
|
|
||||||
input = staticmethod(TextFieldRoot.create_input_deprecated)
|
|
||||||
slot = staticmethod(TextFieldSlot.create)
|
slot = staticmethod(TextFieldSlot.create)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -6,7 +6,6 @@ import contextlib
|
|||||||
import dataclasses
|
import dataclasses
|
||||||
import datetime
|
import datetime
|
||||||
import dis
|
import dis
|
||||||
import functools
|
|
||||||
import inspect
|
import inspect
|
||||||
import json
|
import json
|
||||||
import random
|
import random
|
||||||
@ -2532,7 +2531,6 @@ def computed_var(
|
|||||||
auto_deps: bool = True,
|
auto_deps: bool = True,
|
||||||
interval: Optional[Union[datetime.timedelta, int]] = None,
|
interval: Optional[Union[datetime.timedelta, int]] = None,
|
||||||
backend: bool | None = None,
|
backend: bool | None = None,
|
||||||
_deprecated_cached_var: bool = False,
|
|
||||||
**kwargs,
|
**kwargs,
|
||||||
) -> ComputedVar | Callable[[Callable[[BaseState], Any]], ComputedVar]:
|
) -> ComputedVar | Callable[[Callable[[BaseState], Any]], ComputedVar]:
|
||||||
"""A ComputedVar decorator with or without kwargs.
|
"""A ComputedVar decorator with or without kwargs.
|
||||||
@ -2545,7 +2543,6 @@ def computed_var(
|
|||||||
auto_deps: Whether var dependencies should be auto-determined.
|
auto_deps: Whether var dependencies should be auto-determined.
|
||||||
interval: Interval at which the computed var should be updated.
|
interval: Interval at which the computed var should be updated.
|
||||||
backend: Whether the computed var is a backend var.
|
backend: Whether the computed var is a backend var.
|
||||||
_deprecated_cached_var: Indicate usage of deprecated cached_var partial function.
|
|
||||||
**kwargs: additional attributes to set on the instance
|
**kwargs: additional attributes to set on the instance
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -2555,14 +2552,6 @@ def computed_var(
|
|||||||
ValueError: If caching is disabled and an update interval is set.
|
ValueError: If caching is disabled and an update interval is set.
|
||||||
VarDependencyError: If user supplies dependencies without caching.
|
VarDependencyError: If user supplies dependencies without caching.
|
||||||
"""
|
"""
|
||||||
if _deprecated_cached_var:
|
|
||||||
console.deprecate(
|
|
||||||
feature_name="cached_var",
|
|
||||||
reason=("Use @rx.var(cache=True) instead of @rx.cached_var."),
|
|
||||||
deprecation_version="0.5.6",
|
|
||||||
removal_version="0.6.0",
|
|
||||||
)
|
|
||||||
|
|
||||||
if cache is False and interval is not None:
|
if cache is False and interval is not None:
|
||||||
raise ValueError("Cannot set update interval without caching.")
|
raise ValueError("Cannot set update interval without caching.")
|
||||||
|
|
||||||
@ -2587,10 +2576,6 @@ def computed_var(
|
|||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
# Partial function of computed_var with cache=True
|
|
||||||
cached_var = functools.partial(computed_var, cache=True, _deprecated_cached_var=True)
|
|
||||||
|
|
||||||
|
|
||||||
class CallableVar(BaseVar):
|
class CallableVar(BaseVar):
|
||||||
"""Decorate a Var-returning function to act as both a Var and a function.
|
"""Decorate a Var-returning function to act as both a Var and a function.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from reflex.components.lucide.icon import LUCIDE_ICON_LIST, RENAMED_ICONS_05, Icon
|
from reflex.components.lucide.icon import LUCIDE_ICON_LIST, Icon
|
||||||
from reflex.utils import format
|
from reflex.utils import format
|
||||||
|
|
||||||
|
|
||||||
@ -10,16 +10,6 @@ def test_icon(tag):
|
|||||||
assert icon.alias == f"Lucide{format.to_title_case(tag)}Icon"
|
assert icon.alias == f"Lucide{format.to_title_case(tag)}Icon"
|
||||||
|
|
||||||
|
|
||||||
RENAMED_TAGS = [tag for tag in RENAMED_ICONS_05.items()]
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("tag, new_tag", RENAMED_TAGS)
|
|
||||||
def test_icon_renamed_tags(tag, new_tag):
|
|
||||||
Icon.create(tag)
|
|
||||||
# TODO: need a PR so we can pass the following test. Currently it fails and uses the old tag as the import.
|
|
||||||
# assert icon.alias == f"Lucide{format.to_title_case(new_tag)}Icon"
|
|
||||||
|
|
||||||
|
|
||||||
def test_icon_missing_tag():
|
def test_icon_missing_tag():
|
||||||
with pytest.raises(AttributeError):
|
with pytest.raises(AttributeError):
|
||||||
_ = Icon.create()
|
_ = Icon.create()
|
||||||
|
@ -1613,62 +1613,6 @@ def test_rename_props():
|
|||||||
assert 'renamed_prop3={"prop3_2"}' in rendered_c2["props"]
|
assert 'renamed_prop3={"prop3_2"}' in rendered_c2["props"]
|
||||||
|
|
||||||
|
|
||||||
def test_deprecated_props(capsys):
|
|
||||||
"""Assert that deprecated underscore suffix props are translated.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
capsys: Pytest fixture for capturing stdout and stderr.
|
|
||||||
"""
|
|
||||||
|
|
||||||
class C1(Component):
|
|
||||||
tag = "C1"
|
|
||||||
|
|
||||||
type: Var[str]
|
|
||||||
min: Var[str]
|
|
||||||
max: Var[str]
|
|
||||||
|
|
||||||
# No warnings are emitted when using the new prop names.
|
|
||||||
c1_1 = C1.create(type="type1", min="min1", max="max1")
|
|
||||||
out_err = capsys.readouterr()
|
|
||||||
assert not out_err.err
|
|
||||||
assert not out_err.out
|
|
||||||
|
|
||||||
c1_1_render = c1_1.render()
|
|
||||||
assert 'type={"type1"}' in c1_1_render["props"]
|
|
||||||
assert 'min={"min1"}' in c1_1_render["props"]
|
|
||||||
assert 'max={"max1"}' in c1_1_render["props"]
|
|
||||||
|
|
||||||
# Deprecation warning is emitted with underscore suffix,
|
|
||||||
# but the component still works.
|
|
||||||
c1_2 = C1.create(type_="type2", min_="min2", max_="max2")
|
|
||||||
out_err = capsys.readouterr()
|
|
||||||
assert out_err.out.count("DeprecationWarning:") == 3
|
|
||||||
assert not out_err.err
|
|
||||||
|
|
||||||
c1_2_render = c1_2.render()
|
|
||||||
assert 'type={"type2"}' in c1_2_render["props"]
|
|
||||||
assert 'min={"min2"}' in c1_2_render["props"]
|
|
||||||
assert 'max={"max2"}' in c1_2_render["props"]
|
|
||||||
|
|
||||||
class C2(Component):
|
|
||||||
tag = "C2"
|
|
||||||
|
|
||||||
type_: Var[str]
|
|
||||||
min_: Var[str]
|
|
||||||
max_: Var[str]
|
|
||||||
|
|
||||||
# No warnings are emitted if the actual prop has an underscore suffix
|
|
||||||
c2_1 = C2.create(type_="type1", min_="min1", max_="max1")
|
|
||||||
out_err = capsys.readouterr()
|
|
||||||
assert not out_err.err
|
|
||||||
assert not out_err.out
|
|
||||||
|
|
||||||
c2_1_render = c2_1.render()
|
|
||||||
assert 'type={"type1"}' in c2_1_render["props"]
|
|
||||||
assert 'min={"min1"}' in c2_1_render["props"]
|
|
||||||
assert 'max={"max1"}' in c2_1_render["props"]
|
|
||||||
|
|
||||||
|
|
||||||
def test_custom_component_get_imports():
|
def test_custom_component_get_imports():
|
||||||
class Inner(Component):
|
class Inner(Component):
|
||||||
tag = "Inner"
|
tag = "Inner"
|
||||||
|
Loading…
Reference in New Issue
Block a user