[python] Check if the given input is a container (Array or Map) when validating enum values (#19316)

* checks if input is Array or Map in validate_enum

* update samples
This commit is contained in:
vcutrona 2024-10-10 08:57:04 +02:00 committed by GitHub
parent ea4b17c32f
commit 45fa4384e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 6 deletions

View File

@ -73,15 +73,22 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{/isNullable}}
{{/required}}
{{#isContainer}}
{{#isArray}}
for i in value:
if i not in set([{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]):
raise ValueError("each list item must be one of ({{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}})")
{{/isArray}}
{{^isArray}}
{{#isMap}}
for i in value.values():
if i not in set([{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]):
raise ValueError("dict values must be one of enum values ({{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}})")
{{/isMap}}
{{/isContainer}}
{{^isContainer}}
if value not in set([{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]):
raise ValueError("must be one of enum values ({{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}})")
{{/isArray}}
{{/isContainer}}
return value
{{/isEnum}}
{{/vars}}

View File

@ -38,8 +38,9 @@ class MapTest(BaseModel):
if value is None:
return value
if value not in set(['UPPER', 'lower']):
raise ValueError("must be one of enum values ('UPPER', 'lower')")
for i in value.values():
if i not in set(['UPPER', 'lower']):
raise ValueError("dict values must be one of enum values ('UPPER', 'lower')")
return value
model_config = ConfigDict(

View File

@ -39,8 +39,9 @@ class MapTest(BaseModel):
if value is None:
return value
if value not in set(['UPPER', 'lower']):
raise ValueError("must be one of enum values ('UPPER', 'lower')")
for i in value.values():
if i not in set(['UPPER', 'lower']):
raise ValueError("dict values must be one of enum values ('UPPER', 'lower')")
return value
model_config = ConfigDict(