Merge pull request #29 from HideyoshiNakazone/feature/adds-enums

Adds Aditional Validations in Enum
This commit was merged in pull request #29.
This commit is contained in:
2025-06-22 17:39:54 -03:00
committed by GitHub
2 changed files with 28 additions and 1 deletions

View File

@@ -9,6 +9,16 @@ from enum import Enum
class EnumTypeParser(GenericTypeParser):
json_schema_type = "enum"
allowed_types: tuple[type] = (
str,
int,
float,
bool,
list,
set,
type(None),
)
def from_properties_impl(
self, name, properties, **kwargs: Unpack[TypeParserOptions]
):
@@ -20,6 +30,13 @@ class EnumTypeParser(GenericTypeParser):
if not isinstance(enum_values, list):
raise ValueError(f"Enum type {name} must have 'enum' as a list of values.")
if any(
not isinstance(value, self.allowed_types) for value in enum_values
):
raise ValueError(
f"Enum type {name} must have 'enum' values of allowed types: {self.allowed_types}."
)
# Create a new Enum type dynamically
enum_type = Enum(name, {str(value).upper(): value for value in enum_values})
parsed_properties = self.mappings_properties_builder(properties, **kwargs)

View File

@@ -78,3 +78,13 @@ class TestEnumTypeParser(TestCase):
with self.assertRaises(ValueError):
parser.from_properties_impl("TestEnum", schema)
def test_enum_type_parser_throws_invalid_enum_value(self):
parser = EnumTypeParser()
schema = {
"enum": ["value1", 42, dict()],
}
with self.assertRaises(ValueError):
parser.from_properties_impl("TestEnum", schema)