variables.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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