[REF-3222] define new JS-type var classes (#3668)
* define new JS-type var classes * add docstring * get rid of dataclass definitions and export all new vars * order imports in the correct way * only hash once
This commit is contained in:
parent
b04a7dab84
commit
5b927f18d0
@ -1,3 +1,9 @@
|
|||||||
"""Experimental Immutable-Based Var System."""
|
"""Experimental Immutable-Based Var System."""
|
||||||
|
|
||||||
|
from .base import ArrayVar as ArrayVar
|
||||||
|
from .base import BooleanVar as BooleanVar
|
||||||
|
from .base import FunctionVar as FunctionVar
|
||||||
from .base import ImmutableVar as ImmutableVar
|
from .base import ImmutableVar as ImmutableVar
|
||||||
|
from .base import NumberVar as NumberVar
|
||||||
|
from .base import ObjectVar as ObjectVar
|
||||||
|
from .base import StringVar as StringVar
|
||||||
|
@ -100,7 +100,7 @@ class ImmutableVar(Var):
|
|||||||
kwargs.get("_var_data", self._var_data), merge_var_data
|
kwargs.get("_var_data", self._var_data), merge_var_data
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
return ImmutableVar(**field_values)
|
return type(self)(**field_values)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
@ -161,7 +161,7 @@ class ImmutableVar(Var):
|
|||||||
)
|
)
|
||||||
name = name if isinstance(name, str) else format.json_dumps(name)
|
name = name if isinstance(name, str) else format.json_dumps(name)
|
||||||
|
|
||||||
return ImmutableVar(
|
return cls(
|
||||||
_var_name=name,
|
_var_name=name,
|
||||||
_var_type=type_,
|
_var_type=type_,
|
||||||
_var_data=_var_data,
|
_var_data=_var_data,
|
||||||
@ -204,7 +204,33 @@ class ImmutableVar(Var):
|
|||||||
Returns:
|
Returns:
|
||||||
The formatted var.
|
The formatted var.
|
||||||
"""
|
"""
|
||||||
_global_vars[hash(self)] = self
|
hashed_var = hash(self)
|
||||||
|
|
||||||
|
_global_vars[hashed_var] = self
|
||||||
|
|
||||||
# Encode the _var_data into the formatted output for tracking purposes.
|
# Encode the _var_data into the formatted output for tracking purposes.
|
||||||
return f"{REFLEX_VAR_OPENING_TAG}{hash(self)}{REFLEX_VAR_CLOSING_TAG}{self._var_name}"
|
return f"{REFLEX_VAR_OPENING_TAG}{hashed_var}{REFLEX_VAR_CLOSING_TAG}{self._var_name}"
|
||||||
|
|
||||||
|
|
||||||
|
class StringVar(ImmutableVar):
|
||||||
|
"""Base class for immutable string vars."""
|
||||||
|
|
||||||
|
|
||||||
|
class NumberVar(ImmutableVar):
|
||||||
|
"""Base class for immutable number vars."""
|
||||||
|
|
||||||
|
|
||||||
|
class BooleanVar(ImmutableVar):
|
||||||
|
"""Base class for immutable boolean vars."""
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectVar(ImmutableVar):
|
||||||
|
"""Base class for immutable object vars."""
|
||||||
|
|
||||||
|
|
||||||
|
class ArrayVar(ImmutableVar):
|
||||||
|
"""Base class for immutable array vars."""
|
||||||
|
|
||||||
|
|
||||||
|
class FunctionVar(ImmutableVar):
|
||||||
|
"""Base class for immutable function vars."""
|
||||||
|
Loading…
Reference in New Issue
Block a user