aboutsummaryrefslogtreecommitdiff
path: root/benchmark/agbenchmark/agent_protocol_client/models/step_all_of.py
blob: 8770f3b3184cdc949ccd50d94b36af90a4c7c2d3 (plain)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# coding: utf-8

"""
    Agent Communication Protocol

    Specification of the API protocol for communication with an agent.  # noqa: E501

    The version of the OpenAPI document: v0.2
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""


from __future__ import annotations

import json
import pprint
import re  # noqa: F401
from typing import Any, Optional

from pydantic import BaseModel, Field, StrictBool, StrictStr, conlist, validator

from agbenchmark.agent_protocol_client.models.artifact import Artifact


class StepAllOf(BaseModel):
    """
    StepAllOf
    """

    task_id: StrictStr = Field(
        ..., description="The ID of the task this step belongs to."
    )
    step_id: StrictStr = Field(..., description="The ID of the task step.")
    name: Optional[StrictStr] = Field(None, description="The name of the task step.")
    status: StrictStr = Field(..., description="The status of the task step.")
    output: Optional[StrictStr] = Field(None, description="Output of the task step.")
    additional_output: Optional[Any] = Field(
        None,
        description="Output that the task step has produced. Any value is allowed.",
    )
    artifacts: conlist(Artifact) = Field(
        ..., description="A list of artifacts that the step has produced."
    )
    is_last: Optional[StrictBool] = Field(
        False, description="Whether this is the last step in the task."
    )
    __properties = [
        "task_id",
        "step_id",
        "name",
        "status",
        "output",
        "additional_output",
        "artifacts",
        "is_last",
    ]

    @validator("status")
    def status_validate_enum(cls, value):
        """Validates the enum"""
        if value not in ("created", "completed"):
            raise ValueError("must be one of enum values ('created', 'completed')")
        return value

    class Config:
        """Pydantic configuration"""

        allow_population_by_field_name = True
        validate_assignment = True

    def to_str(self) -> str:
        """Returns the string representation of the model using alias"""
        return pprint.pformat(self.dict(by_alias=True))

    def to_json(self) -> str:
        """Returns the JSON representation of the model using alias"""
        return json.dumps(self.to_dict())

    @classmethod
    def from_json(cls, json_str: str) -> StepAllOf:
        """Create an instance of StepAllOf from a JSON string"""
        return cls.from_dict(json.loads(json_str))

    def to_dict(self):
        """Returns the dictionary representation of the model using alias"""
        _dict = self.dict(by_alias=True, exclude={}, exclude_none=True)
        # override the default output from pydantic by calling `to_dict()` of each item in artifacts (list)
        _items = []
        if self.artifacts:
            for _item in self.artifacts:
                if _item:
                    _items.append(_item.to_dict())
            _dict["artifacts"] = _items
        # set to None if additional_output (nullable) is None
        # and __fields_set__ contains the field
        if (
            self.additional_output is None
            and "additional_output" in self.__fields_set__
        ):
            _dict["additional_output"] = None

        return _dict

    @classmethod
    def from_dict(cls, obj: dict) -> StepAllOf:
        """Create an instance of StepAllOf from a dict"""
        if obj is None:
            return None

        if not isinstance(obj, dict):
            return StepAllOf.parse_obj(obj)

        _obj = StepAllOf.parse_obj(
            {
                "task_id": obj.get("task_id"),
                "step_id": obj.get("step_id"),
                "name": obj.get("name"),
                "status": obj.get("status"),
                "output": obj.get("output"),
                "additional_output": obj.get("additional_output"),
                "artifacts": [
                    Artifact.from_dict(_item) for _item in obj.get("artifacts")
                ]
                if obj.get("artifacts") is not None
                else None,
                "is_last": obj.get("is_last")
                if obj.get("is_last") is not None
                else False,
            }
        )
        return _obj