|
from pydantic import Field |
|
|
|
from core.helper import encrypter |
|
|
|
from .segments import ( |
|
ArrayAnySegment, |
|
ArrayNumberSegment, |
|
ArrayObjectSegment, |
|
ArrayStringSegment, |
|
FileSegment, |
|
FloatSegment, |
|
IntegerSegment, |
|
NoneSegment, |
|
ObjectSegment, |
|
Segment, |
|
StringSegment, |
|
) |
|
from .types import SegmentType |
|
|
|
|
|
class Variable(Segment): |
|
""" |
|
A variable is a segment that has a name. |
|
""" |
|
|
|
id: str = Field( |
|
default="", |
|
description="Unique identity for variable. It's only used by environment variables now.", |
|
) |
|
name: str |
|
description: str = Field(default="", description="Description of the variable.") |
|
|
|
|
|
class StringVariable(StringSegment, Variable): |
|
pass |
|
|
|
|
|
class FloatVariable(FloatSegment, Variable): |
|
pass |
|
|
|
|
|
class IntegerVariable(IntegerSegment, Variable): |
|
pass |
|
|
|
|
|
class ObjectVariable(ObjectSegment, Variable): |
|
pass |
|
|
|
|
|
class ArrayAnyVariable(ArrayAnySegment, Variable): |
|
pass |
|
|
|
|
|
class ArrayStringVariable(ArrayStringSegment, Variable): |
|
pass |
|
|
|
|
|
class ArrayNumberVariable(ArrayNumberSegment, Variable): |
|
pass |
|
|
|
|
|
class ArrayObjectVariable(ArrayObjectSegment, Variable): |
|
pass |
|
|
|
|
|
class SecretVariable(StringVariable): |
|
value_type: SegmentType = SegmentType.SECRET |
|
|
|
@property |
|
def log(self) -> str: |
|
return encrypter.obfuscated_token(self.value) |
|
|
|
|
|
class NoneVariable(NoneSegment, Variable): |
|
value_type: SegmentType = SegmentType.NONE |
|
value: None = None |
|
|
|
|
|
class FileVariable(FileSegment, Variable): |
|
pass |
|
|