Skip to content

Commit b41e290

Browse files
fix(python) #23572 str non-str values before validating with regex (#23592)
* fix(python) str non-str values before validating with regex * generate samples
1 parent e6c830e commit b41e290

File tree

13 files changed

+75
-0
lines changed

13 files changed

+75
-0
lines changed

modules/openapi-generator/src/main/resources/python/model_generic.mustache

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
5353

5454
{{/isNullable}}
5555
{{/required}}
56+
if not isinstance(value, str):
57+
value = str(value)
58+
5659
if not re.match(r"{{{.}}}", value{{#vendorExtensions.x-modifiers}} ,re.{{{.}}}{{/vendorExtensions.x-modifiers}}):
5760
raise ValueError(r"must validate the regular expression {{{vendorExtensions.x-pattern}}}")
5861
return value

samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/format_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ def string_validate_regular_expression(cls, value):
5656
if value is None:
5757
return value
5858

59+
if not isinstance(value, str):
60+
value = str(value)
61+
5962
if not re.match(r"[a-z]", value ,re.IGNORECASE):
6063
raise ValueError(r"must validate the regular expression /[a-z]/i")
6164
return value
@@ -66,6 +69,9 @@ def string_with_double_quote_pattern_validate_regular_expression(cls, value):
6669
if value is None:
6770
return value
6871

72+
if not isinstance(value, str):
73+
value = str(value)
74+
6975
if not re.match(r"this is \"something\"", value):
7076
raise ValueError(r"must validate the regular expression /this is \"something\"/")
7177
return value
@@ -76,6 +82,9 @@ def pattern_with_digits_validate_regular_expression(cls, value):
7682
if value is None:
7783
return value
7884

85+
if not isinstance(value, str):
86+
value = str(value)
87+
7988
if not re.match(r"^\d{10}$", value):
8089
raise ValueError(r"must validate the regular expression /^\d{10}$/")
8190
return value
@@ -86,6 +95,9 @@ def pattern_with_digits_and_delimiter_validate_regular_expression(cls, value):
8695
if value is None:
8796
return value
8897

98+
if not isinstance(value, str):
99+
value = str(value)
100+
89101
if not re.match(r"^image_\d{1,3}$", value ,re.IGNORECASE):
90102
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
91103
return value

samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/nullable_property.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def name_validate_regular_expression(cls, value):
3838
if value is None:
3939
return value
4040

41+
if not isinstance(value, str):
42+
value = str(value)
43+
4144
if not re.match(r"^[A-Z].*", value):
4245
raise ValueError(r"must validate the regular expression /^[A-Z].*/")
4346
return value

samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/uuid_with_pattern.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ def id_validate_regular_expression(cls, value):
3737
if value is None:
3838
return value
3939

40+
if not isinstance(value, str):
41+
value = str(value)
42+
4043
if not re.match(r"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", value):
4144
raise ValueError(r"must validate the regular expression /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/")
4245
return value

samples/openapi3/client/petstore/python-httpx/petstore_api/models/format_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ def string_validate_regular_expression(cls, value):
5656
if value is None:
5757
return value
5858

59+
if not isinstance(value, str):
60+
value = str(value)
61+
5962
if not re.match(r"[a-z]", value ,re.IGNORECASE):
6063
raise ValueError(r"must validate the regular expression /[a-z]/i")
6164
return value
@@ -66,6 +69,9 @@ def string_with_double_quote_pattern_validate_regular_expression(cls, value):
6669
if value is None:
6770
return value
6871

72+
if not isinstance(value, str):
73+
value = str(value)
74+
6975
if not re.match(r"this is \"something\"", value):
7076
raise ValueError(r"must validate the regular expression /this is \"something\"/")
7177
return value
@@ -76,6 +82,9 @@ def pattern_with_digits_validate_regular_expression(cls, value):
7682
if value is None:
7783
return value
7884

85+
if not isinstance(value, str):
86+
value = str(value)
87+
7988
if not re.match(r"^\d{10}$", value):
8089
raise ValueError(r"must validate the regular expression /^\d{10}$/")
8190
return value
@@ -86,6 +95,9 @@ def pattern_with_digits_and_delimiter_validate_regular_expression(cls, value):
8695
if value is None:
8796
return value
8897

98+
if not isinstance(value, str):
99+
value = str(value)
100+
89101
if not re.match(r"^image_\d{1,3}$", value ,re.IGNORECASE):
90102
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
91103
return value

samples/openapi3/client/petstore/python-httpx/petstore_api/models/nullable_property.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def name_validate_regular_expression(cls, value):
3838
if value is None:
3939
return value
4040

41+
if not isinstance(value, str):
42+
value = str(value)
43+
4144
if not re.match(r"^[A-Z].*", value):
4245
raise ValueError(r"must validate the regular expression /^[A-Z].*/")
4346
return value

samples/openapi3/client/petstore/python-httpx/petstore_api/models/uuid_with_pattern.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ def id_validate_regular_expression(cls, value):
3737
if value is None:
3838
return value
3939

40+
if not isinstance(value, str):
41+
value = str(value)
42+
4043
if not re.match(r"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", value):
4144
raise ValueError(r"must validate the regular expression /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/")
4245
return value

samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/format_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ def string_validate_regular_expression(cls, value):
5757
if value is None:
5858
return value
5959

60+
if not isinstance(value, str):
61+
value = str(value)
62+
6063
if not re.match(r"[a-z]", value ,re.IGNORECASE):
6164
raise ValueError(r"must validate the regular expression /[a-z]/i")
6265
return value
@@ -67,6 +70,9 @@ def string_with_double_quote_pattern_validate_regular_expression(cls, value):
6770
if value is None:
6871
return value
6972

73+
if not isinstance(value, str):
74+
value = str(value)
75+
7076
if not re.match(r"this is \"something\"", value):
7177
raise ValueError(r"must validate the regular expression /this is \"something\"/")
7278
return value
@@ -77,6 +83,9 @@ def pattern_with_digits_validate_regular_expression(cls, value):
7783
if value is None:
7884
return value
7985

86+
if not isinstance(value, str):
87+
value = str(value)
88+
8089
if not re.match(r"^\d{10}$", value):
8190
raise ValueError(r"must validate the regular expression /^\d{10}$/")
8291
return value
@@ -87,6 +96,9 @@ def pattern_with_digits_and_delimiter_validate_regular_expression(cls, value):
8796
if value is None:
8897
return value
8998

99+
if not isinstance(value, str):
100+
value = str(value)
101+
90102
if not re.match(r"^image_\d{1,3}$", value ,re.IGNORECASE):
91103
raise ValueError(r"must validate the regular expression /^image_\d{1,3}$/i")
92104
return value

samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/nullable_property.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ def name_validate_regular_expression(cls, value):
3939
if value is None:
4040
return value
4141

42+
if not isinstance(value, str):
43+
value = str(value)
44+
4245
if not re.match(r"^[A-Z].*", value):
4346
raise ValueError(r"must validate the regular expression /^[A-Z].*/")
4447
return value

samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/uuid_with_pattern.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def id_validate_regular_expression(cls, value):
3838
if value is None:
3939
return value
4040

41+
if not isinstance(value, str):
42+
value = str(value)
43+
4144
if not re.match(r"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", value):
4245
raise ValueError(r"must validate the regular expression /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/")
4346
return value

0 commit comments

Comments
 (0)