variables.py 1.5 KB

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