variables.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from collections.abc import Sequence
  2. from uuid import uuid4
  3. from pydantic import Field
  4. from core.helper import encrypter
  5. from .segments import (
  6. ArrayAnySegment,
  7. ArrayFileSegment,
  8. ArrayNumberSegment,
  9. ArrayObjectSegment,
  10. ArraySegment,
  11. ArrayStringSegment,
  12. FileSegment,
  13. FloatSegment,
  14. IntegerSegment,
  15. NoneSegment,
  16. ObjectSegment,
  17. Segment,
  18. StringSegment,
  19. )
  20. from .types import SegmentType
  21. class Variable(Segment):
  22. """
  23. A variable is a segment that has a name.
  24. """
  25. id: str = Field(
  26. default=lambda _: str(uuid4()),
  27. description="Unique identity for variable.",
  28. )
  29. name: str
  30. description: str = Field(default="", description="Description of the variable.")
  31. selector: Sequence[str] = Field(default_factory=list)
  32. class StringVariable(StringSegment, Variable):
  33. pass
  34. class FloatVariable(FloatSegment, Variable):
  35. pass
  36. class IntegerVariable(IntegerSegment, Variable):
  37. pass
  38. class ObjectVariable(ObjectSegment, Variable):
  39. pass
  40. class ArrayVariable(ArraySegment, Variable):
  41. pass
  42. class ArrayAnyVariable(ArrayAnySegment, ArrayVariable):
  43. pass
  44. class ArrayStringVariable(ArrayStringSegment, ArrayVariable):
  45. pass
  46. class ArrayNumberVariable(ArrayNumberSegment, ArrayVariable):
  47. pass
  48. class ArrayObjectVariable(ArrayObjectSegment, ArrayVariable):
  49. pass
  50. class SecretVariable(StringVariable):
  51. value_type: SegmentType = SegmentType.SECRET
  52. @property
  53. def log(self) -> str:
  54. return encrypter.obfuscated_token(self.value)
  55. class NoneVariable(NoneSegment, Variable):
  56. value_type: SegmentType = SegmentType.NONE
  57. value: None = None
  58. class FileVariable(FileSegment, Variable):
  59. pass
  60. class ArrayFileVariable(ArrayFileSegment, Variable):
  61. pass