File size: 2,268 Bytes
d8d14f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from pydantic import BaseModel
from dataclasses import dataclass
from swarms import (
    create_yaml_schema_from_dict,
    YamlModel,
)


@dataclass
class TestDataClass:
    name: str
    age: int
    is_active: bool


class TestPydanticModel(BaseModel):
    name: str
    age: int
    is_active: bool


def test_create_yaml_schema_from_dict_dataclass():
    data = {"name": "Alice", "age": 30, "is_active": True}
    result = create_yaml_schema_from_dict(data, TestDataClass)
    expected_result = """
    name:
      type: str
      default: None
      description: No description provided
    age:
      type: int
      default: None
      description: No description provided
    is_active:
      type: bool
      default: None
      description: No description provided
    """
    assert result == expected_result


def test_create_yaml_schema_from_dict_pydantic():
    data = {"name": "Alice", "age": 30, "is_active": True}
    result = create_yaml_schema_from_dict(data, TestPydanticModel)
    expected_result = """
    name:
      type: str
      default: None
      description: No description provided
    age:
      type: int
      default: None
      description: No description provided
    is_active:
      type: bool
      default: None
      description: No description provided
    """
    assert result == expected_result


def test_create_yaml_schema_from_dict_regular_class():
    class TestRegularClass:
        def __init__(self, name, age, is_active):
            self.name = name
            self.age = age
            self.is_active = is_active

    data = {"name": "Alice", "age": 30, "is_active": True}
    result = create_yaml_schema_from_dict(data, TestRegularClass)
    expected_result = """
    name:
      type: str
      description: No description provided
    age:
      type: int
      description: No description provided
    is_active:
      type: bool
      description: No description provided
    """
    assert result == expected_result


class User(YamlModel):
    name: str
    age: int
    is_active: bool


def test_yaml_model():
    # Create an instance of the User model
    user = User(name="Alice", age=30, is_active=True)

    assert user.name == "Alice"
    assert user.age == 30
    assert user.is_active is True