Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion dargs/json_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,9 @@ def _convert_types(T: type | Any | None) -> str:
return "null"
elif T is str:
return "string"
elif T in (int, float):
elif T is int:
return "integer"
elif T is float:
return "number"
elif T is bool:
return "boolean"
Expand Down
12 changes: 10 additions & 2 deletions tests/test_json_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
import json
import unittest

from jsonschema import validate
from jsonschema import ValidationError, validate

from dargs import Argument
from dargs.json_schema import _convert_types, generate_json_schema

from .dpmdargs import example_json_str, gen_args
Expand All @@ -18,7 +19,7 @@ def test_json_schema(self) -> None:
validate(data, schema)

def test_convert_types(self) -> None:
self.assertEqual(_convert_types(int), "number")
self.assertEqual(_convert_types(int), "integer")
self.assertEqual(_convert_types(str), "string")
self.assertEqual(_convert_types(float), "number")
self.assertEqual(_convert_types(bool), "boolean")
Expand All @@ -28,3 +29,10 @@ def test_convert_types(self) -> None:
self.assertEqual(_convert_types(dict), "object")
with self.assertRaises(ValueError):
_convert_types(set)

def test_integer_argument_rejects_fractional_numbers(self) -> None:
"""Generated integer schemas match dargs' runtime int validation."""
schema = generate_json_schema(Argument("count", int))
validate(1, schema)
with self.assertRaises(ValidationError):
validate(1.5, schema)
Loading