Spaces:
Running
Running
import importlib | |
import pytest | |
from langflow.utils.util import build_template_from_function, get_base_classes, get_default_factory | |
from pydantic import BaseModel | |
# Dummy classes for testing purposes | |
class Parent(BaseModel): | |
"""Parent Class.""" | |
parent_field: str | |
class Child(Parent): | |
"""Child Class.""" | |
child_field: int | |
class ExampleClass1(BaseModel): | |
"""Example class 1.""" | |
def __init__(self, data: list[int] | None = None): | |
self.data = data or [1, 2, 3] | |
class ExampleClass2(BaseModel): | |
"""Example class 2.""" | |
def __init__(self, data: dict[str, int] | None = None): | |
self.data = data or {"a": 1, "b": 2, "c": 3} | |
def example_loader_1() -> ExampleClass1: | |
"""Example loader function 1.""" | |
return ExampleClass1() | |
def example_loader_2() -> ExampleClass2: | |
"""Example loader function 2.""" | |
return ExampleClass2() | |
def test_build_template_from_function(): | |
type_to_loader_dict = { | |
"example1": example_loader_1, | |
"example2": example_loader_2, | |
} | |
# Test with valid name | |
result = build_template_from_function("ExampleClass1", type_to_loader_dict) | |
assert result is not None | |
assert "template" in result | |
assert "description" in result | |
assert "base_classes" in result | |
# Test with add_function=True | |
result_with_function = build_template_from_function("ExampleClass1", type_to_loader_dict, add_function=True) | |
assert result_with_function is not None | |
assert "Callable" in result_with_function["base_classes"] | |
# Test with invalid name | |
with pytest.raises(ValueError, match=r".* not found"): | |
build_template_from_function("NonExistent", type_to_loader_dict) | |
# Test get_base_classes | |
def test_get_base_classes(): | |
base_classes_parent = get_base_classes(Parent) | |
base_classes_child = get_base_classes(Child) | |
assert "Parent" in base_classes_parent | |
assert "Child" in base_classes_child | |
assert "Parent" in base_classes_child | |
# Test get_default_factory | |
def test_get_default_factory(): | |
module_name = "langflow.utils.util" | |
function_repr = "<function dummy_function>" | |
def dummy_function(): | |
return "default_value" | |
# Add dummy_function to your_module | |
importlib.import_module(module_name).dummy_function = dummy_function | |
default_value = get_default_factory(module_name, function_repr) | |
assert default_value == "default_value" | |