Skip to content

Commit 49f469c

Browse files
committed
fix: Create schema for additional properties for object type params
1 parent 91d31c5 commit 49f469c

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

packages/toolbox-core/src/toolbox_core/protocol.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,27 @@
1818
from pydantic import BaseModel
1919

2020

21+
class AdditionalPropertiesSchema(BaseModel):
22+
"""
23+
Defines the value type for 'object' parameters.
24+
"""
25+
26+
type: str
27+
28+
def __get_type(self) -> Type:
29+
"""Converts the string type to a Python type."""
30+
if self.type == "string":
31+
return str
32+
elif self.type == "integer":
33+
return int
34+
elif self.type == "float":
35+
return float
36+
elif self.type == "boolean":
37+
return bool
38+
else:
39+
raise ValueError(f"Unsupported schema type: {self.type}")
40+
41+
2142
class ParameterSchema(BaseModel):
2243
"""
2344
Schema for a tool parameter.
@@ -29,7 +50,7 @@ class ParameterSchema(BaseModel):
2950
description: str
3051
authSources: Optional[list[str]] = None
3152
items: Optional["ParameterSchema"] = None
32-
additionalProperties: Optional[Union[bool, "ParameterSchema"]] = None
53+
additionalProperties: Optional[Union[bool, "AdditionalPropertiesSchema"]] = None
3354

3455
def __get_type(self) -> Type:
3556
base_type: Type
@@ -46,7 +67,7 @@ def __get_type(self) -> Type:
4667
raise ValueError("Unexpected value: type is 'array' but items is None")
4768
base_type = list[self.items.__get_type()] # type: ignore
4869
elif self.type == "object":
49-
if isinstance(self.additionalProperties, ParameterSchema):
70+
if isinstance(self.additionalProperties, AdditionalPropertiesSchema):
5071
value_type = self.additionalProperties.__get_type()
5172
base_type = dict[str, value_type] # type: ignore
5273
else:

0 commit comments

Comments
 (0)