rename Record to Data

This commit is contained in:
ogabrielluiz 2024-06-12 17:58:16 -03:00
commit 1d0056f4fc
142 changed files with 819 additions and 869 deletions

View file

@ -7,7 +7,6 @@ import pytest
import respx
from dictdiffer import diff
from httpx import Response
from langflow.components import data
@ -109,11 +108,11 @@ async def test_build_with_multiple_urls(api_request):
assert len(results) == len(urls)
@patch("langflow.components.data.Directory.parallel_load_records")
@patch("langflow.components.data.Directory.parallel_load_data")
@patch("langflow.components.data.Directory.retrieve_file_paths")
@patch("langflow.components.data.DirectoryComponent.resolve_path")
def test_directory_component_build_with_multithreading(
mock_resolve_path, mock_retrieve_file_paths, mock_parallel_load_records
mock_resolve_path, mock_retrieve_file_paths, mock_parallel_load_data
):
# Arrange
directory_component = data.DirectoryComponent()
@ -129,7 +128,7 @@ def test_directory_component_build_with_multithreading(
mock_retrieve_file_paths.return_value = [
os.path.join(path, file) for file in os.listdir(path) if file.endswith(".py")
]
mock_parallel_load_records.return_value = [Mock()]
mock_parallel_load_data.return_value = [Mock()]
# Act
directory_component.build(
@ -145,7 +144,7 @@ def test_directory_component_build_with_multithreading(
# Assert
mock_resolve_path.assert_called_once_with(path)
mock_retrieve_file_paths.assert_called_once_with(path, load_hidden, recursive, depth)
mock_parallel_load_records.assert_called_once_with(
mock_parallel_load_data.assert_called_once_with(
mock_retrieve_file_paths.return_value, silent_errors, max_concurrency
)
@ -163,7 +162,7 @@ def test_directory_without_mocks():
setup_path = Path(setup.__file__).parent / "starter_projects"
results = directory_component.build(str(setup_path), use_multithreading=False)
assert len(results) == len(projects)
# each result is a Record that contains the content attribute
# each result is a Data that contains the content attribute
# each are dict that are exactly the same as one of the projects
for i, result in enumerate(results):
assert result.text in projects, list(diff(result.text, projects[i]))
@ -180,7 +179,7 @@ def test_directory_without_mocks():
def test_url_component():
url_component = data.URLComponent()
# the url component can be used to load the contents of a website
records = url_component.build(["https://langflow.org"])
assert all(record.data for record in records)
assert all(record.text for record in records)
assert all(record.source for record in records)
_data = url_component.build(["https://langflow.org"])
assert all(value.data for value in _data)
assert all(value.text for value in _data)
assert all(value.source for value in _data)

View file

@ -4,6 +4,7 @@ from uuid import UUID, uuid4
import pytest
from fastapi import status
from fastapi.testclient import TestClient
from langflow.custom.directory_reader.directory_reader import DirectoryReader
from langflow.services.deps import get_settings_service
@ -479,7 +480,7 @@ def test_successful_run_with_output_type_text(client, starter_project, created_a
display_names = [output.get("component_display_name") for output in outputs_dict.get("outputs")]
assert all([name in display_names for name in ["Chat Output"]]), display_names
inner_results = [output.get("results") for output in outputs_dict.get("outputs")]
expected_keys = ["Record", "Message"]
expected_keys = ["Data", "Message"]
assert all([key in result for result in inner_results for key in expected_keys]), outputs_dict
@ -510,7 +511,7 @@ def test_successful_run_with_output_type_any(client, starter_project, created_ap
display_names = [output.get("component_display_name") for output in outputs_dict.get("outputs")]
assert all([name in display_names for name in ["Chat Output"]]), display_names
inner_results = [output.get("results") for output in outputs_dict.get("outputs")]
expected_keys = ["Record", "Message"]
expected_keys = ["Data", "Message"]
assert all([key in result for result in inner_results for key in expected_keys]), outputs_dict

View file

@ -1,8 +1,7 @@
from langchain_core.documents import Document
from langflow.components import helpers
from langflow.custom.utils import build_custom_component_template
from langflow.schema import Record
from langflow.schema import Data
def test_update_record_component():
@ -11,7 +10,7 @@ def test_update_record_component():
# Act
new_data = {"new_key": "new_value"}
existing_record = Record(data={"existing_key": "existing_value"})
existing_record = Data(data={"existing_key": "existing_value"})
result = update_record_component.build(existing_record, new_data)
assert result.data == {"existing_key": "existing_value", "new_key": "new_value"}
assert result.existing_key == "existing_value"
@ -29,7 +28,7 @@ def test_document_to_record_component():
# Assert
# Replace with your actual expected result
assert result == [Record(data={"text": "key: value", "url": "https://example.com"})]
assert result == [Data(data={"text": "key: value", "url": "https://example.com"})]
def test_uuid_generator_component():
@ -52,15 +51,15 @@ def test_uuid_generator_component():
assert len(result) == 36
def test_records_as_text_component():
def test_data_as_text_component():
# Arrange
records_as_text_component = helpers.RecordsToTextComponent()
data_as_text_component = helpers.RecordsToTextComponent()
# Act
# Replace with your actual test data
records = [Record(data={"key": "value", "bacon": "eggs"})]
data = [Data(data={"key": "value", "bacon": "eggs"})]
template = "Data:{data} -- Bacon:{bacon}"
result = records_as_text_component.build(records, template=template)
result = data_as_text_component.build(data, template=template)
# Assert
# Replace with your actual expected result
@ -78,4 +77,4 @@ def test_text_to_record_component():
# Assert
# Replace with your actual expected result
assert result == Record(data={"key": "value"})
assert result == Data(data={"key": "value"})

View file

@ -1,23 +1,22 @@
from langchain_core.documents import Document
from langflow.schema import Record
from langflow.schema import Data
def test_record_initialization():
record = Record(text_key="msg", data={"msg": "Hello, World!", "extra": "value"})
record = Data(text_key="msg", data={"msg": "Hello, World!", "extra": "value"})
assert record.msg == "Hello, World!"
assert record.extra == "value"
def test_validate_data_with_extra_keys():
record = Record(dummy_key="dummy", data={"key": "value"})
record = Data(dummy_key="dummy", data={"key": "value"})
assert record.data["dummy_key"] == "dummy"
assert "dummy_key" in record.data
assert record.key == "value"
def test_conversion_to_document():
record = Record(data={"text": "Sample text", "meta": "data"})
record = Data(data={"text": "Sample text", "meta": "data"})
document = record.to_lc_document()
assert document.page_content == "Sample text"
assert document.metadata == {"meta": "data"}
@ -25,35 +24,35 @@ def test_conversion_to_document():
def test_conversion_from_document():
document = Document(page_content="Doc content", metadata={"meta": "info"})
record = Record.from_document(document)
record = Data.from_document(document)
assert record.text == "Doc content"
assert record.meta == "info"
def test_add_method_for_strings():
record1 = Record(data={"text": "Hello"})
record2 = Record(data={"text": " World"})
record1 = Data(data={"text": "Hello"})
record2 = Data(data={"text": " World"})
combined = record1 + record2
assert combined.text == "Hello World"
def test_add_method_for_integers():
record1 = Record(data={"number": 5})
record2 = Record(data={"number": 10})
record1 = Data(data={"number": 5})
record2 = Data(data={"number": 10})
combined = record1 + record2
assert combined.number == 15
def test_add_method_with_non_overlapping_keys():
record1 = Record(data={"text": "Hello"})
record2 = Record(data={"number": 10})
record1 = Data(data={"text": "Hello"})
record2 = Data(data={"number": 10})
combined = record1 + record2
assert combined.text == "Hello"
assert combined.number == 10
def test_custom_attribute_get_set_del():
record = Record()
record = Data()
record.custom_attr = "custom_value"
assert record.custom_attr == "custom_value"
del record.custom_attr
@ -63,7 +62,7 @@ def test_custom_attribute_get_set_del():
def test_deep_copy():
import copy
record1 = Record(data={"text": "Hello", "number": 10})
record1 = Data(data={"text": "Hello", "number": 10})
record2 = copy.deepcopy(record1)
assert record2.text == "Hello"
assert record2.number == 10
@ -72,20 +71,20 @@ def test_deep_copy():
def test_custom_attribute_setting_and_getting():
record = Record()
record = Data()
record.dynamic_attribute = "Dynamic Value"
assert record.dynamic_attribute == "Dynamic Value"
def test_str_and_dir_methods():
record = Record(text_key="text", data={"text": "Test Text", "key": "value"})
record = Data(text_key="text", data={"text": "Test Text", "key": "value"})
assert "Test Text" in str(record)
assert "key" in dir(record)
assert "data" in dir(record)
def test_dir_includes_data_keys():
record = Record(data={"text": "Hello", "new_attr": "value"})
record = Data(data={"text": "Hello", "new_attr": "value"})
dir_output = dir(record)
# Check for standard attributes
@ -103,7 +102,7 @@ def test_dir_includes_data_keys():
def test_dir_reflects_attribute_deletion():
record = Record(data={"removable": "I can be removed"})
record = Data(data={"removable": "I can be removed"})
assert "removable" in dir(record)
# Delete the attribute and check again
@ -113,27 +112,27 @@ def test_dir_reflects_attribute_deletion():
def test_get_text_with_text_key():
data = {"text": "Hello, World!"}
schema = Record(data=data, text_key="text", default_value="default")
schema = Data(data=data, text_key="text", default_value="default")
result = schema.get_text()
assert result == "Hello, World!"
def test_get_text_without_text_key():
data = {"other_key": "Hello, World!"}
schema = Record(data=data, text_key="text", default_value="default")
schema = Data(data=data, text_key="text", default_value="default")
result = schema.get_text()
assert result == "default"
def test_get_text_with_empty_data():
data = {}
schema = Record(data=data, text_key="text", default_value="default")
schema = Data(data=data, text_key="text", default_value="default")
result = schema.get_text()
assert result == "default"
def test_get_text_with_none_data():
data = None
schema = Record(data=data, text_key="text", default_value="default")
schema = Data(data=data, text_key="text", default_value="default")
result = schema.get_text()
assert result == "default"