Use Python uuid.UUID instead of StrictStr (#21740)

This commit is contained in:
Espen Haugsdal
2025-08-17 16:25:53 +02:00
committed by GitHub
parent 2513d82989
commit 43d58ee9b0
14 changed files with 43 additions and 19 deletions

View File

@@ -2024,7 +2024,8 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
}
private PythonType uuidType(IJsonSchemaValidationProperties cp) {
return new PythonType(cp.getDataType());
moduleImports.add("uuid", "UUID");
return new PythonType("UUID");
}
private PythonType modelType(IJsonSchemaValidationProperties cp) {
@@ -2051,6 +2052,8 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
return arrayType(cp);
} else if (cp.getIsMap() || cp.getIsFreeFormObject()) {
return mapType(cp);
} else if (cp.getIsUuid()) {
return uuidType(cp);
} else if (cp.getIsString()) {
return stringType(cp);
} else if (cp.getIsNumber() || cp.getIsFloat() || cp.getIsDouble()) {
@@ -2067,8 +2070,6 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
return anyType(cp);
} else if (cp.getIsDate() || cp.getIsDateTime()) {
return dateType(cp);
} else if (cp.getIsUuid()) {
return uuidType(cp);
}
return null;

View File

@@ -12,6 +12,7 @@ import mimetypes
import os
import re
import tempfile
import uuid
from urllib.parse import quote
from typing import Tuple, Optional, List, Dict, Union
@@ -365,6 +366,8 @@ class ApiClient:
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj
elif isinstance(obj, uuid.UUID):
return str(obj)
elif isinstance(obj, list):
return [
self.sanitize_for_serialization(sub_obj) for sub_obj in obj

View File

@@ -22,6 +22,7 @@ import mimetypes
import os
import re
import tempfile
import uuid
from urllib.parse import quote
from typing import Tuple, Optional, List, Dict, Union
@@ -357,6 +358,8 @@ class ApiClient:
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj
elif isinstance(obj, uuid.UUID):
return str(obj)
elif isinstance(obj, list):
return [
self.sanitize_for_serialization(sub_obj) for sub_obj in obj

View File

@@ -22,6 +22,7 @@ import mimetypes
import os
import re
import tempfile
import uuid
from urllib.parse import quote
from typing import Tuple, Optional, List, Dict, Union
@@ -357,6 +358,8 @@ class ApiClient:
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj
elif isinstance(obj, uuid.UUID):
return str(obj)
elif isinstance(obj, list):
return [
self.sanitize_for_serialization(sub_obj) for sub_obj in obj

View File

@@ -20,6 +20,7 @@ from datetime import date, datetime
from pydantic import Field, StrictBool, StrictBytes, StrictInt, StrictStr, field_validator
from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
from uuid import UUID
from petstore_api.models.client import Client
from petstore_api.models.enum_class import EnumClass
from petstore_api.models.file_schema_test_class import FileSchemaTestClass
@@ -4913,7 +4914,7 @@ class FakeApi:
@validate_call
async def fake_uuid_example(
self,
uuid_example: Annotated[StrictStr, Field(description="uuid example")],
uuid_example: Annotated[UUID, Field(description="uuid example")],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -4979,7 +4980,7 @@ class FakeApi:
@validate_call
async def fake_uuid_example_with_http_info(
self,
uuid_example: Annotated[StrictStr, Field(description="uuid example")],
uuid_example: Annotated[UUID, Field(description="uuid example")],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -5045,7 +5046,7 @@ class FakeApi:
@validate_call
async def fake_uuid_example_without_preload_content(
self,
uuid_example: Annotated[StrictStr, Field(description="uuid example")],
uuid_example: Annotated[UUID, Field(description="uuid example")],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],

View File

@@ -21,6 +21,7 @@ import mimetypes
import os
import re
import tempfile
import uuid
from urllib.parse import quote
from typing import Tuple, Optional, List, Dict, Union
@@ -359,6 +360,8 @@ class ApiClient:
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj
elif isinstance(obj, uuid.UUID):
return str(obj)
elif isinstance(obj, list):
return [
self.sanitize_for_serialization(sub_obj) for sub_obj in obj

View File

@@ -22,6 +22,7 @@ from decimal import Decimal
from pydantic import BaseModel, ConfigDict, Field, StrictBytes, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
from uuid import UUID
from typing import Optional, Set
from typing_extensions import Self
@@ -42,7 +43,7 @@ class FormatTest(BaseModel):
binary: Optional[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]] = None
var_date: date = Field(alias="date")
date_time: Optional[datetime] = Field(default=None, alias="dateTime")
uuid: Optional[StrictStr] = None
uuid: Optional[UUID] = None
password: Annotated[str, Field(min_length=10, strict=True, max_length=64)]
pattern_with_digits: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="A string that is a 10 digit number. Can have leading zeros.")
pattern_with_digits_and_delimiter: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.")

View File

@@ -18,8 +18,9 @@ import re # noqa: F401
import json
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from pydantic import BaseModel, ConfigDict, Field
from typing import Any, ClassVar, Dict, List, Optional
from uuid import UUID
from petstore_api.models.animal import Animal
from typing import Optional, Set
from typing_extensions import Self
@@ -28,7 +29,7 @@ class MixedPropertiesAndAdditionalPropertiesClass(BaseModel):
"""
MixedPropertiesAndAdditionalPropertiesClass
""" # noqa: E501
uuid: Optional[StrictStr] = None
uuid: Optional[UUID] = None
date_time: Optional[datetime] = Field(default=None, alias="dateTime")
map: Optional[Dict[str, Animal]] = None
__properties: ClassVar[List[str]] = ["uuid", "dateTime", "map"]

View File

@@ -17,8 +17,9 @@ import pprint
import re # noqa: F401
import json
from pydantic import BaseModel, ConfigDict, StrictStr
from pydantic import BaseModel, ConfigDict
from typing import Any, ClassVar, Dict, List
from uuid import UUID
from petstore_api.models.task_activity import TaskActivity
from typing import Optional, Set
from typing_extensions import Self
@@ -27,7 +28,7 @@ class Task(BaseModel):
"""
Used to test oneOf enums with only one string value.
""" # noqa: E501
id: StrictStr
id: UUID
activity: TaskActivity
__properties: ClassVar[List[str]] = ["id", "activity"]

View File

@@ -20,6 +20,7 @@ from datetime import date, datetime
from pydantic import Field, StrictBool, StrictBytes, StrictFloat, StrictInt, StrictStr, field_validator
from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
from uuid import UUID
from petstore_api.models.client import Client
from petstore_api.models.enum_class import EnumClass
from petstore_api.models.file_schema_test_class import FileSchemaTestClass
@@ -4913,7 +4914,7 @@ class FakeApi:
@validate_call
def fake_uuid_example(
self,
uuid_example: Annotated[StrictStr, Field(description="uuid example")],
uuid_example: Annotated[UUID, Field(description="uuid example")],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -4979,7 +4980,7 @@ class FakeApi:
@validate_call
def fake_uuid_example_with_http_info(
self,
uuid_example: Annotated[StrictStr, Field(description="uuid example")],
uuid_example: Annotated[UUID, Field(description="uuid example")],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -5045,7 +5046,7 @@ class FakeApi:
@validate_call
def fake_uuid_example_without_preload_content(
self,
uuid_example: Annotated[StrictStr, Field(description="uuid example")],
uuid_example: Annotated[UUID, Field(description="uuid example")],
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],

View File

@@ -21,6 +21,7 @@ import mimetypes
import os
import re
import tempfile
import uuid
from urllib.parse import quote
from typing import Tuple, Optional, List, Dict, Union
@@ -356,6 +357,8 @@ class ApiClient:
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj
elif isinstance(obj, uuid.UUID):
return str(obj)
elif isinstance(obj, list):
return [
self.sanitize_for_serialization(sub_obj) for sub_obj in obj

View File

@@ -22,6 +22,7 @@ from decimal import Decimal
from pydantic import BaseModel, ConfigDict, Field, StrictBytes, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
from uuid import UUID
from typing import Optional, Set
from typing_extensions import Self
@@ -42,7 +43,7 @@ class FormatTest(BaseModel):
binary: Optional[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]] = None
var_date: date = Field(alias="date")
date_time: Optional[datetime] = Field(default=None, alias="dateTime")
uuid: Optional[StrictStr] = None
uuid: Optional[UUID] = None
password: Annotated[str, Field(min_length=10, strict=True, max_length=64)]
pattern_with_digits: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="A string that is a 10 digit number. Can have leading zeros.")
pattern_with_digits_and_delimiter: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.")

View File

@@ -18,8 +18,9 @@ import re # noqa: F401
import json
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from pydantic import BaseModel, ConfigDict, Field
from typing import Any, ClassVar, Dict, List, Optional
from uuid import UUID
from petstore_api.models.animal import Animal
from typing import Optional, Set
from typing_extensions import Self
@@ -28,7 +29,7 @@ class MixedPropertiesAndAdditionalPropertiesClass(BaseModel):
"""
MixedPropertiesAndAdditionalPropertiesClass
""" # noqa: E501
uuid: Optional[StrictStr] = None
uuid: Optional[UUID] = None
date_time: Optional[datetime] = Field(default=None, alias="dateTime")
map: Optional[Dict[str, Animal]] = None
additional_properties: Dict[str, Any] = {}

View File

@@ -17,8 +17,9 @@ import pprint
import re # noqa: F401
import json
from pydantic import BaseModel, ConfigDict, StrictStr
from pydantic import BaseModel, ConfigDict
from typing import Any, ClassVar, Dict, List
from uuid import UUID
from petstore_api.models.task_activity import TaskActivity
from typing import Optional, Set
from typing_extensions import Self
@@ -27,7 +28,7 @@ class Task(BaseModel):
"""
Used to test oneOf enums with only one string value.
""" # noqa: E501
id: StrictStr
id: UUID
activity: TaskActivity
additional_properties: Dict[str, Any] = {}
__properties: ClassVar[List[str]] = ["id", "activity"]