variables.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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