variables.py 1.2 KB

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