variables.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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