variables.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from pydantic import Field
  2. from core.helper import encrypter
  3. from .segments import (
  4. ArrayAnySegment,
  5. ArrayNumberSegment,
  6. ArrayObjectSegment,
  7. ArrayStringSegment,
  8. FloatSegment,
  9. IntegerSegment,
  10. NoneSegment,
  11. ObjectSegment,
  12. Segment,
  13. StringSegment,
  14. )
  15. from .types import SegmentType
  16. class Variable(Segment):
  17. """
  18. A variable is a segment that has a name.
  19. """
  20. id: str = Field(
  21. default="",
  22. description="Unique identity for variable. It's only used by environment variables now.",
  23. )
  24. name: str
  25. description: str = Field(default="", description="Description of the variable.")
  26. class StringVariable(StringSegment, Variable):
  27. pass
  28. class FloatVariable(FloatSegment, Variable):
  29. pass
  30. class IntegerVariable(IntegerSegment, Variable):
  31. pass
  32. class ObjectVariable(ObjectSegment, Variable):
  33. pass
  34. class ArrayAnyVariable(ArrayAnySegment, Variable):
  35. pass
  36. class ArrayStringVariable(ArrayStringSegment, Variable):
  37. pass
  38. class ArrayNumberVariable(ArrayNumberSegment, Variable):
  39. pass
  40. class ArrayObjectVariable(ArrayObjectSegment, Variable):
  41. pass
  42. class SecretVariable(StringVariable):
  43. value_type: SegmentType = SegmentType.SECRET
  44. @property
  45. def log(self) -> str:
  46. return encrypter.obfuscated_token(self.value)
  47. class NoneVariable(NoneSegment, Variable):
  48. value_type: SegmentType = SegmentType.NONE
  49. value: None = None