Make tool JSON schemas consistent (#31756)
Make the order of array items consistent using sorted()
This commit is contained in:
@@ -80,7 +80,7 @@ def _parse_type_hint(hint: str) -> Dict:
|
|||||||
return_dict = subtypes[0]
|
return_dict = subtypes[0]
|
||||||
elif all(isinstance(subtype["type"], str) for subtype in subtypes):
|
elif all(isinstance(subtype["type"], str) for subtype in subtypes):
|
||||||
# A union of basic types can be expressed as a list in the schema
|
# A union of basic types can be expressed as a list in the schema
|
||||||
return_dict = {"type": [subtype["type"] for subtype in subtypes]}
|
return_dict = {"type": sorted([subtype["type"] for subtype in subtypes])}
|
||||||
else:
|
else:
|
||||||
# A union of more complex types requires "anyOf"
|
# A union of more complex types requires "anyOf"
|
||||||
return_dict = {"anyOf": subtypes}
|
return_dict = {"anyOf": subtypes}
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ class JsonSchemaGeneratorTest(unittest.TestCase):
|
|||||||
"properties": {
|
"properties": {
|
||||||
"x": {
|
"x": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {"type": "array", "items": {"type": ["string", "integer"]}},
|
"items": {"type": "array", "items": {"type": ["integer", "string"]}},
|
||||||
"description": "The input",
|
"description": "The input",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -455,13 +455,13 @@ class JsonSchemaGeneratorTest(unittest.TestCase):
|
|||||||
},
|
},
|
||||||
"y": {
|
"y": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {"type": ["string", "integer"]},
|
"items": {"type": ["integer", "string"]},
|
||||||
"nullable": True,
|
"nullable": True,
|
||||||
"description": "The second input. It's a big list with a single-line description.",
|
"description": "The second input. It's a big list with a single-line description.",
|
||||||
},
|
},
|
||||||
"z": {
|
"z": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"prefixItems": [{"type": ["string", "integer"]}, {"type": "string"}],
|
"prefixItems": [{"type": ["integer", "string"]}, {"type": "string"}],
|
||||||
"description": "The third input. It's some kind of tuple with a default arg.",
|
"description": "The third input. It's some kind of tuple with a default arg.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user