mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from collections.abc import Sequence
 | |
| from typing import cast
 | |
| from uuid import uuid4
 | |
| 
 | |
| from pydantic import Field
 | |
| 
 | |
| from core.helper import encrypter
 | |
| 
 | |
| from .segments import (
 | |
|     ArrayAnySegment,
 | |
|     ArrayFileSegment,
 | |
|     ArrayNumberSegment,
 | |
|     ArrayObjectSegment,
 | |
|     ArraySegment,
 | |
|     ArrayStringSegment,
 | |
|     FileSegment,
 | |
|     FloatSegment,
 | |
|     IntegerSegment,
 | |
|     NoneSegment,
 | |
|     ObjectSegment,
 | |
|     Segment,
 | |
|     StringSegment,
 | |
| )
 | |
| from .types import SegmentType
 | |
| 
 | |
| 
 | |
| class Variable(Segment):
 | |
|     """
 | |
|     A variable is a segment that has a name.
 | |
|     """
 | |
| 
 | |
|     id: str = Field(
 | |
|         default_factory=lambda: str(uuid4()),
 | |
|         description="Unique identity for variable.",
 | |
|     )
 | |
|     name: str
 | |
|     description: str = Field(default="", description="Description of the variable.")
 | |
|     selector: Sequence[str] = Field(default_factory=list)
 | |
| 
 | |
| 
 | |
| class StringVariable(StringSegment, Variable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class FloatVariable(FloatSegment, Variable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class IntegerVariable(IntegerSegment, Variable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ObjectVariable(ObjectSegment, Variable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ArrayVariable(ArraySegment, Variable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ArrayAnyVariable(ArrayAnySegment, ArrayVariable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ArrayStringVariable(ArrayStringSegment, ArrayVariable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ArrayNumberVariable(ArrayNumberSegment, ArrayVariable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ArrayObjectVariable(ArrayObjectSegment, ArrayVariable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class SecretVariable(StringVariable):
 | |
|     value_type: SegmentType = SegmentType.SECRET
 | |
| 
 | |
|     @property
 | |
|     def log(self) -> str:
 | |
|         return cast(str, encrypter.obfuscated_token(self.value))
 | |
| 
 | |
| 
 | |
| class NoneVariable(NoneSegment, Variable):
 | |
|     value_type: SegmentType = SegmentType.NONE
 | |
|     value: None = None
 | |
| 
 | |
| 
 | |
| class FileVariable(FileSegment, Variable):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class ArrayFileVariable(ArrayFileSegment, ArrayVariable):
 | |
|     pass
 | 
