| from langflow.custom import Component |
| from langflow.field_typing.range_spec import RangeSpec |
| from langflow.inputs.inputs import DataInput, IntInput |
| from langflow.io import Output |
| from langflow.schema import Data |
|
|
|
|
| class SelectDataComponent(Component): |
| display_name: str = "Select Data" |
| description: str = "Select a single data from a list of data." |
| name: str = "SelectData" |
| icon = "prototypes" |
| legacy = True |
|
|
| inputs = [ |
| DataInput( |
| name="data_list", |
| display_name="Data List", |
| info="List of data to select from.", |
| is_list=True, |
| ), |
| IntInput( |
| name="data_index", |
| display_name="Data Index", |
| info="Index of the data to select.", |
| value=0, |
| range_spec=RangeSpec(min=0, max=15, step=1, step_type="int"), |
| ), |
| ] |
|
|
| outputs = [ |
| Output(display_name="Selected Data", name="selected_data", method="select_data"), |
| ] |
|
|
| async def select_data(self) -> Data: |
| |
| selected_index = int(self.data_index) |
| |
|
|
| |
| if selected_index < 0 or selected_index >= len(self.data_list): |
| msg = f"Selected index {selected_index} is out of range." |
| raise ValueError(msg) |
|
|
| |
| selected_data = self.data_list[selected_index] |
| self.status = selected_data |
| return selected_data |
|
|