[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."""
|
||||
|
||||
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 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
|
||||
),
|
||||
)
|
||||
return ImmutableVar(**field_values)
|
||||
return type(self)(**field_values)
|
||||
|
||||
@classmethod
|
||||
def create(
|
||||
@ -161,7 +161,7 @@ class ImmutableVar(Var):
|
||||
)
|
||||
name = name if isinstance(name, str) else format.json_dumps(name)
|
||||
|
||||
return ImmutableVar(
|
||||
return cls(
|
||||
_var_name=name,
|
||||
_var_type=type_,
|
||||
_var_data=_var_data,
|
||||
@ -204,7 +204,33 @@ class ImmutableVar(Var):
|
||||
Returns:
|
||||
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.
|
||||
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