python: adjust basic typing information (#17511)

* python: adjust basic typing information

This is an initial pass to fix and adjust the typing information for the
generated client. This is enough to have mypy runnning without complains
on all the (modern) generated clients (Pydantic v1 code is not checked
for instance)

mypy is also now run directly in the CI, so further changes will also be
checked and thus, will need to be compliant with good typing
information.

Note that this doesn't *fully* type all the code: mypy is not run in
"strict" mode and there are still many functions/methods/attributes
which are still not fully typed, but it's a first good step in that
direction.

* ApiResponse's raw_data can't be None

* Fix indentation

* Revert test changes

* run mypy on tests/ directory

* don't forcefully convert the client response headers to dict

* override petstore ApiResponse model

* adjust type of 'any/one_of_schemas' fields
This commit is contained in:
Jonathan Ballet 2024-01-06 08:40:42 +01:00 committed by GitHub
parent 4acbd69c3d
commit 22a0fc1727
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
257 changed files with 3168 additions and 1975 deletions

View File

@ -42,3 +42,7 @@ jobs:
- name: Test - name: Test
working-directory: ${{ matrix.sample }} working-directory: ${{ matrix.sample }}
run: python -m pytest run: python -m pytest
- name: mypy
working-directory: ${{ matrix.sample }}
run: python -m mypy

View File

@ -57,3 +57,7 @@ jobs:
- name: Test - name: Test
working-directory: ${{ matrix.sample }} working-directory: ${{ matrix.sample }}
run: poetry run pytest -v run: poetry run pytest -v
- name: mypy
working-directory: ${{ matrix.sample }}
run: poetry run mypy

View File

@ -6,3 +6,9 @@ library: asyncio
additionalProperties: additionalProperties:
packageName: petstore_api packageName: petstore_api
mapNumberTo: float mapNumberTo: float
nameMappings:
_type: underscore_type
type_: type_with_underscore
modelNameMappings:
# The OpenAPI spec ApiResponse conflicts with the internal ApiResponse
ApiResponse: ModelApiResponse

View File

@ -10,3 +10,6 @@ additionalProperties:
nameMappings: nameMappings:
_type: underscore_type _type: underscore_type
type_: type_with_underscore type_: type_with_underscore
modelNameMappings:
# The OpenAPI spec ApiResponse conflicts with the internal ApiResponse
ApiResponse: ModelApiResponse

View File

@ -4,11 +4,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
{{#imports}} {{#imports}}
{{import}} {{import}}

View File

@ -280,15 +280,13 @@ class ApiClient:
) )
except ApiException as e: except ApiException as e:
if e.body:
e.body = e.body.decode('utf-8')
raise e raise e
return response_data return response_data
def response_deserialize( def response_deserialize(
self, self,
response_data: rest.RESTResponse = None, response_data: rest.RESTResponse,
response_types_map=None response_types_map=None
) -> ApiResponse: ) -> ApiResponse:
"""Deserializes response into an object. """Deserializes response into an object.
@ -297,6 +295,8 @@ class ApiClient:
:return: ApiResponse :return: ApiResponse
""" """
msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
assert response_data.data is not None, msg
response_type = response_types_map.get(str(response_data.status), None) response_type = response_types_map.get(str(response_data.status), None)
if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:

View File

@ -1,8 +1,8 @@
"""API response object.""" """API response object."""
from __future__ import annotations from __future__ import annotations
from typing import Dict, Optional, Generic, TypeVar from typing import Optional, Generic, Mapping, TypeVar
from pydantic import Field, StrictInt, StrictStr, StrictBytes, BaseModel from pydantic import Field, StrictInt, StrictBytes, BaseModel
T = TypeVar("T") T = TypeVar("T")
@ -12,7 +12,7 @@ class ApiResponse(BaseModel, Generic[T]):
""" """
status_code: StrictInt = Field(description="HTTP status code") status_code: StrictInt = Field(description="HTTP status code")
headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers") headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers")
data: T = Field(description="Deserialized data given the data type") data: T = Field(description="Deserialized data given the data type")
raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") raw_data: StrictBytes = Field(description="Raw data (HTTP response body)")

View File

@ -6,6 +6,7 @@ import io
import json import json
import re import re
import ssl import ssl
from typing import Optional
import aiohttp import aiohttp
import aiohttp_retry import aiohttp_retry
@ -72,6 +73,7 @@ class RESTClientObject:
) )
retries = configuration.retries retries = configuration.retries
self.retry_client: Optional[aiohttp_retry.RetryClient]
if retries is not None: if retries is not None:
self.retry_client = aiohttp_retry.RetryClient( self.retry_client = aiohttp_retry.RetryClient(
client_session=self.pool_manager, client_session=self.pool_manager,

View File

@ -2,7 +2,6 @@
{{>partial_header}} {{>partial_header}}
from typing import Any, Optional from typing import Any, Optional
from typing_extensions import Self from typing_extensions import Self
class OpenApiException(Exception): class OpenApiException(Exception):

View File

@ -11,6 +11,7 @@ import re # noqa: F401
{{/vendorExtensions.x-py-model-imports}} {{/vendorExtensions.x-py-model-imports}}
from typing import Union, Any, List, TYPE_CHECKING, Optional, Dict from typing import Union, Any, List, TYPE_CHECKING, Optional, Dict
from typing_extensions import Literal, Self from typing_extensions import Literal, Self
from pydantic import Field
{{#lambda.uppercase}}{{{classname}}}{{/lambda.uppercase}}_ANY_OF_SCHEMAS = [{{#anyOf}}"{{.}}"{{^-last}}, {{/-last}}{{/anyOf}}] {{#lambda.uppercase}}{{{classname}}}{{/lambda.uppercase}}_ANY_OF_SCHEMAS = [{{#anyOf}}"{{.}}"{{^-last}}, {{/-last}}{{/anyOf}}]
@ -27,7 +28,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
actual_instance: Optional[Union[{{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}]] = None actual_instance: Optional[Union[{{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}]] = None
else: else:
actual_instance: Any = None actual_instance: Any = None
any_of_schemas: List[str] = Literal[{{#lambda.uppercase}}{{{classname}}}{{/lambda.uppercase}}_ANY_OF_SCHEMAS] any_of_schemas: List[str] = Field(default=Literal[{{#anyOf}}"{{.}}"{{^-last}}, {{/-last}}{{/anyOf}}])
model_config = { model_config = {
"validate_assignment": True, "validate_assignment": True,
@ -153,22 +154,20 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
if self.actual_instance is None: if self.actual_instance is None:
return "null" return "null"
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
if callable(to_json):
return self.actual_instance.to_json() return self.actual_instance.to_json()
else: else:
return json.dumps(self.actual_instance) return json.dumps(self.actual_instance)
def to_dict(self) -> Dict: def to_dict(self) -> Optional[Union[Dict, {{#anyOf}}{{.}}{{^-last}}, {{/-last}}{{/anyOf}}]]:
"""Returns the dict representation of the actual instance""" """Returns the dict representation of the actual instance"""
if self.actual_instance is None: if self.actual_instance is None:
return "null" return None
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
if callable(to_json):
return self.actual_instance.to_dict() return self.actual_instance.to_dict()
else: else:
return json.dumps(self.actual_instance) return self.actual_instance
def to_str(self) -> str: def to_str(self) -> str:
"""Returns the string representation of the actual instance""" """Returns the string representation of the actual instance"""

View File

@ -9,10 +9,8 @@ import json
{{#vendorExtensions.x-py-model-imports}} {{#vendorExtensions.x-py-model-imports}}
{{{.}}} {{{.}}}
{{/vendorExtensions.x-py-model-imports}} {{/vendorExtensions.x-py-model-imports}}
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}): class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}):
""" """
@ -87,7 +85,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{#hasChildren}} {{#hasChildren}}
{{#discriminator}} {{#discriminator}}
# JSON field name that stores the object type # JSON field name that stores the object type
__discriminator_property_name: ClassVar[List[str]] = '{{discriminator.propertyBaseName}}' __discriminator_property_name: ClassVar[str] = '{{discriminator.propertyBaseName}}'
# discriminator mappings # discriminator mappings
__discriminator_value_class_map: ClassVar[Dict[str, str]] = { __discriminator_value_class_map: ClassVar[Dict[str, str]] = {
@ -95,7 +93,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
} }
@classmethod @classmethod
def get_discriminator_value(cls, obj: Dict) -> str: def get_discriminator_value(cls, obj: Dict) -> Optional[str]:
"""Returns the discriminator value (object type) of the data""" """Returns the discriminator value (object type) of the data"""
discriminator_value = obj[cls.__discriminator_property_name] discriminator_value = obj[cls.__discriminator_property_name]
if discriminator_value: if discriminator_value:
@ -115,7 +113,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> {{^hasChildren}}Self{{/hasChildren}}{{#hasChildren}}{{#discriminator}}Union[{{#children}}Self{{^-last}}, {{/-last}}{{/children}}]{{/discriminator}}{{^discriminator}}Self{{/discriminator}}{{/hasChildren}}: def from_json(cls, json_str: str) -> Optional[{{^hasChildren}}Self{{/hasChildren}}{{#hasChildren}}{{#discriminator}}Union[{{#children}}Self{{^-last}}, {{/-last}}{{/children}}]{{/discriminator}}{{^discriminator}}Self{{/discriminator}}{{/hasChildren}}]:
"""Create an instance of {{{classname}}} from a JSON string""" """Create an instance of {{{classname}}} from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -135,16 +133,18 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
* Fields in `self.additional_properties` are added to the output dict. * Fields in `self.additional_properties` are added to the output dict.
{{/isAdditionalPropertiesTrue}} {{/isAdditionalPropertiesTrue}}
""" """
_dict = self.model_dump( excluded_fields: Set[str] = set([
by_alias=True,
exclude={
{{#vendorExtensions.x-py-readonly}} {{#vendorExtensions.x-py-readonly}}
"{{{.}}}", "{{{.}}}",
{{/vendorExtensions.x-py-readonly}} {{/vendorExtensions.x-py-readonly}}
{{#isAdditionalPropertiesTrue}} {{#isAdditionalPropertiesTrue}}
"additional_properties", "additional_properties",
{{/isAdditionalPropertiesTrue}} {{/isAdditionalPropertiesTrue}}
}, ])
_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
{{#allVars}} {{#allVars}}
@ -234,10 +234,10 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{/allVars}} {{/allVars}}
return _dict return _dict
@classmethod
def from_dict(cls, obj: Dict) -> {{^hasChildren}}Self{{/hasChildren}}{{#hasChildren}}{{#discriminator}}Union[{{#children}}Self{{^-last}}, {{/-last}}{{/children}}]{{/discriminator}}{{^discriminator}}Self{{/discriminator}}{{/hasChildren}}:
"""Create an instance of {{{classname}}} from a dict"""
{{#hasChildren}} {{#hasChildren}}
@classmethod
def from_dict(cls, obj: Dict) -> Optional[{{#discriminator}}Union[{{#children}}Self{{^-last}}, {{/-last}}{{/children}}]{{/discriminator}}{{^discriminator}}Self{{/discriminator}}]:
"""Create an instance of {{{classname}}} from a dict"""
{{#discriminator}} {{#discriminator}}
# look up the object type based on discriminator mapping # look up the object type based on discriminator mapping
object_type = cls.get_discriminator_value(obj) object_type = cls.get_discriminator_value(obj)
@ -251,6 +251,9 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{/discriminator}} {{/discriminator}}
{{/hasChildren}} {{/hasChildren}}
{{^hasChildren}} {{^hasChildren}}
@classmethod
def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of {{{classname}}} from a dict"""
if obj is None: if obj is None:
return None return None
@ -277,7 +280,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{^items.items.isPrimitiveType}} {{^items.items.isPrimitiveType}}
"{{{baseName}}}": [ "{{{baseName}}}": [
[{{{items.items.dataType}}}.from_dict(_inner_item) for _inner_item in _item] [{{{items.items.dataType}}}.from_dict(_inner_item) for _inner_item in _item]
for _item in obj.get("{{{baseName}}}") for _item in obj["{{{baseName}}}"]
] if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}} ] if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}}
{{/items.items.isPrimitiveType}} {{/items.items.isPrimitiveType}}
{{/items.isArray}} {{/items.isArray}}
@ -287,7 +290,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
"{{{baseName}}}": obj.get("{{{baseName}}}"){{^-last}},{{/-last}} "{{{baseName}}}": obj.get("{{{baseName}}}"){{^-last}},{{/-last}}
{{/items.isEnumOrRef}} {{/items.isEnumOrRef}}
{{^items.isEnumOrRef}} {{^items.isEnumOrRef}}
"{{{baseName}}}": [{{{items.dataType}}}.from_dict(_item) for _item in obj.get("{{{baseName}}}")] if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}} "{{{baseName}}}": [{{{items.dataType}}}.from_dict(_item) for _item in obj["{{{baseName}}}"]] if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}}
{{/items.isEnumOrRef}} {{/items.isEnumOrRef}}
{{/items.isPrimitiveType}} {{/items.isPrimitiveType}}
{{#items.isPrimitiveType}} {{#items.isPrimitiveType}}
@ -320,14 +323,14 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
if _v is not None if _v is not None
else None else None
) )
for _k, _v in obj.get("{{{baseName}}}").items() for _k, _v in obj.get("{{{baseName}}}", {}).items()
){{^-last}},{{/-last}} ){{^-last}},{{/-last}}
{{/items.isArray}} {{/items.isArray}}
{{/items.isContainer}} {{/items.isContainer}}
{{^items.isContainer}} {{^items.isContainer}}
"{{{baseName}}}": dict( "{{{baseName}}}": dict(
(_k, {{{items.dataType}}}.from_dict(_v)) (_k, {{{items.dataType}}}.from_dict(_v))
for _k, _v in obj.get("{{{baseName}}}").items() for _k, _v in obj["{{{baseName}}}"].items()
) )
if obj.get("{{{baseName}}}") is not None if obj.get("{{{baseName}}}") is not None
else None{{^-last}},{{/-last}} else None{{^-last}},{{/-last}}
@ -345,7 +348,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{^isContainer}} {{^isContainer}}
{{^isPrimitiveType}} {{^isPrimitiveType}}
{{^isEnumOrRef}} {{^isEnumOrRef}}
"{{{baseName}}}": {{{dataType}}}.from_dict(obj.get("{{{baseName}}}")) if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}} "{{{baseName}}}": {{{dataType}}}.from_dict(obj["{{{baseName}}}"]) if obj.get("{{{baseName}}}") is not None else None{{^-last}},{{/-last}}
{{/isEnumOrRef}} {{/isEnumOrRef}}
{{#isEnumOrRef}} {{#isEnumOrRef}}
"{{{baseName}}}": obj.get("{{{baseName}}}"){{^-last}},{{/-last}} "{{{baseName}}}": obj.get("{{{baseName}}}"){{^-last}},{{/-last}}

View File

@ -22,7 +22,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
{{vendorExtensions.x-py-name}}: {{{vendorExtensions.x-py-typing}}} {{vendorExtensions.x-py-name}}: {{{vendorExtensions.x-py-typing}}}
{{/composedSchemas.oneOf}} {{/composedSchemas.oneOf}}
actual_instance: Optional[Union[{{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}]] = None actual_instance: Optional[Union[{{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}]] = None
one_of_schemas: List[str] = Literal[{{#oneOf}}"{{.}}"{{^-last}}, {{/-last}}{{/oneOf}}] one_of_schemas: List[str] = Field(default=Literal[{{#oneOf}}"{{.}}"{{^-last}}, {{/-last}}{{/oneOf}}])
model_config = { model_config = {
"validate_assignment": True, "validate_assignment": True,
@ -175,19 +175,17 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
if self.actual_instance is None: if self.actual_instance is None:
return "null" return "null"
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
if callable(to_json):
return self.actual_instance.to_json() return self.actual_instance.to_json()
else: else:
return json.dumps(self.actual_instance) return json.dumps(self.actual_instance)
def to_dict(self) -> Dict: def to_dict(self) -> Optional[Union[Dict, {{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}]]:
"""Returns the dict representation of the actual instance""" """Returns the dict representation of the actual instance"""
if self.actual_instance is None: if self.actual_instance is None:
return None return None
to_dict = getattr(self.actual_instance, "to_dict", None) if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
if callable(to_dict):
return self.actual_instance.to_dict() return self.actual_instance.to_dict()
else: else:
# primitive type # primitive type

View File

@ -32,6 +32,9 @@ typing-extensions = ">=4.7.1"
pytest = ">=7.2.1" pytest = ">=7.2.1"
tox = ">=3.9.0" tox = ">=3.9.0"
flake8 = ">=4.0.0" flake8 = ">=4.0.0"
types-python-dateutil = ">=2.8.19.14"
mypy = "1.4.1"
[build-system] [build-system]
requires = ["setuptools"] requires = ["setuptools"]
@ -39,3 +42,10 @@ build-backend = "setuptools.build_meta"
[tool.pylint.'MESSAGES CONTROL'] [tool.pylint.'MESSAGES CONTROL']
extension-pkg-whitelist = "pydantic" extension-pkg-whitelist = "pydantic"
[tool.mypy]
files = [
"{{{packageName}}}",
#"test", # auto-generated tests
"tests", # hand-written tests
]

View File

@ -61,56 +61,45 @@ class RESTClientObject:
else: else:
cert_reqs = ssl.CERT_NONE cert_reqs = ssl.CERT_NONE
addition_pool_args = {} pool_args = {
"cert_reqs": cert_reqs,
"ca_certs": configuration.ssl_ca_cert,
"cert_file": configuration.cert_file,
"key_file": configuration.key_file,
}
if configuration.assert_hostname is not None: if configuration.assert_hostname is not None:
addition_pool_args['assert_hostname'] = ( pool_args['assert_hostname'] = (
configuration.assert_hostname configuration.assert_hostname
) )
if configuration.retries is not None: if configuration.retries is not None:
addition_pool_args['retries'] = configuration.retries pool_args['retries'] = configuration.retries
if configuration.tls_server_name: if configuration.tls_server_name:
addition_pool_args['server_hostname'] = configuration.tls_server_name pool_args['server_hostname'] = configuration.tls_server_name
if configuration.socket_options is not None: if configuration.socket_options is not None:
addition_pool_args['socket_options'] = configuration.socket_options pool_args['socket_options'] = configuration.socket_options
if configuration.connection_pool_maxsize is not None: if configuration.connection_pool_maxsize is not None:
addition_pool_args['maxsize'] = configuration.connection_pool_maxsize pool_args['maxsize'] = configuration.connection_pool_maxsize
# https pool manager # https pool manager
self.pool_manager: urllib3.PoolManager
if configuration.proxy: if configuration.proxy:
if is_socks_proxy_url(configuration.proxy): if is_socks_proxy_url(configuration.proxy):
from urllib3.contrib.socks import SOCKSProxyManager from urllib3.contrib.socks import SOCKSProxyManager
self.pool_manager = SOCKSProxyManager( pool_args["proxy_url"] = configuration.proxy
cert_reqs=cert_reqs, pool_args["headers"] = configuration.proxy_headers
ca_certs=configuration.ssl_ca_cert, self.pool_manager = SOCKSProxyManager(**pool_args)
cert_file=configuration.cert_file,
key_file=configuration.key_file,
proxy_url=configuration.proxy,
headers=configuration.proxy_headers,
**addition_pool_args
)
else: else:
self.pool_manager = urllib3.ProxyManager( pool_args["proxy_url"] = configuration.proxy
cert_reqs=cert_reqs, pool_args["proxy_headers"] = configuration.proxy_headers
ca_certs=configuration.ssl_ca_cert, self.pool_manager = urllib3.ProxyManager(**pool_args)
cert_file=configuration.cert_file,
key_file=configuration.key_file,
proxy_url=configuration.proxy,
proxy_headers=configuration.proxy_headers,
**addition_pool_args
)
else: else:
self.pool_manager = urllib3.PoolManager( self.pool_manager = urllib3.PoolManager(**pool_args)
cert_reqs=cert_reqs,
ca_certs=configuration.ssl_ca_cert,
cert_file=configuration.cert_file,
key_file=configuration.key_file,
**addition_pool_args
)
def request( def request(
self, self,

View File

@ -1,3 +1,5 @@
pytest~=7.1.3 pytest~=7.1.3
pytest-cov>=2.8.1 pytest-cov>=2.8.1
pytest-randomly>=3.12.0 pytest-randomly>=3.12.0
mypy>=1.4.1
types-python-dateutil>=2.8.19

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from openapi_client.api_client import ApiClient from openapi_client.api_client import ApiClient

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field, StrictBytes, StrictStr from pydantic import Field, StrictBytes, StrictStr
from typing import Any, Dict, List, Optional, Union from typing import Any, Dict, List, Optional, Union

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import StrictBool, StrictInt, StrictStr from pydantic import StrictBool, StrictInt, StrictStr
from typing import Optional from typing import Optional

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import StrictBool, StrictInt, StrictStr, field_validator from pydantic import StrictBool, StrictInt, StrictStr, field_validator
from typing import Optional from typing import Optional

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import StrictInt, StrictStr, field_validator from pydantic import StrictInt, StrictStr, field_validator
from openapi_client.models.string_enum_ref import StringEnumRef from openapi_client.models.string_enum_ref import StringEnumRef

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from datetime import date, datetime from datetime import date, datetime
from pydantic import StrictBool, StrictInt, StrictStr, field_validator from pydantic import StrictBool, StrictInt, StrictStr, field_validator

View File

@ -273,15 +273,13 @@ class ApiClient:
) )
except ApiException as e: except ApiException as e:
if e.body:
e.body = e.body.decode('utf-8')
raise e raise e
return response_data return response_data
def response_deserialize( def response_deserialize(
self, self,
response_data: rest.RESTResponse = None, response_data: rest.RESTResponse,
response_types_map=None response_types_map=None
) -> ApiResponse: ) -> ApiResponse:
"""Deserializes response into an object. """Deserializes response into an object.
@ -290,6 +288,8 @@ class ApiClient:
:return: ApiResponse :return: ApiResponse
""" """
msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
assert response_data.data is not None, msg
response_type = response_types_map.get(str(response_data.status), None) response_type = response_types_map.get(str(response_data.status), None)
if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:

View File

@ -1,8 +1,8 @@
"""API response object.""" """API response object."""
from __future__ import annotations from __future__ import annotations
from typing import Dict, Optional, Generic, TypeVar from typing import Optional, Generic, Mapping, TypeVar
from pydantic import Field, StrictInt, StrictStr, StrictBytes, BaseModel from pydantic import Field, StrictInt, StrictBytes, BaseModel
T = TypeVar("T") T = TypeVar("T")
@ -12,7 +12,7 @@ class ApiResponse(BaseModel, Generic[T]):
""" """
status_code: StrictInt = Field(description="HTTP status code") status_code: StrictInt = Field(description="HTTP status code")
headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers") headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers")
data: T = Field(description="Deserialized data given the data type") data: T = Field(description="Deserialized data given the data type")
raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") raw_data: StrictBytes = Field(description="Raw data (HTTP response body)")

View File

@ -13,7 +13,6 @@
""" # noqa: E501 """ # noqa: E501
from typing import Any, Optional from typing import Any, Optional
from typing_extensions import Self from typing_extensions import Self
class OpenApiException(Exception): class OpenApiException(Exception):

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Bird(BaseModel): class Bird(BaseModel):
""" """
@ -50,7 +48,7 @@ class Bird(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Bird from a JSON string""" """Create an instance of Bird from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class Bird(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Bird from a dict""" """Create an instance of Bird from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Category(BaseModel): class Category(BaseModel):
""" """
@ -50,7 +48,7 @@ class Category(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Category from a JSON string""" """Create an instance of Category from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class Category(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Category from a dict""" """Create an instance of Category from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -22,10 +22,8 @@ from datetime import datetime
from pydantic import Field, StrictStr from pydantic import Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.query import Query from openapi_client.models.query import Query
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class DataQuery(Query): class DataQuery(Query):
""" """
@ -53,7 +51,7 @@ class DataQuery(Query):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of DataQuery from a JSON string""" """Create an instance of DataQuery from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -67,16 +65,18 @@ class DataQuery(Query):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of DataQuery from a dict""" """Create an instance of DataQuery from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -21,10 +21,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr, field_validator from pydantic import BaseModel, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.string_enum_ref import StringEnumRef from openapi_client.models.string_enum_ref import StringEnumRef
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class DefaultValue(BaseModel): class DefaultValue(BaseModel):
""" """
@ -68,7 +66,7 @@ class DefaultValue(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of DefaultValue from a JSON string""" """Create an instance of DefaultValue from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -82,10 +80,12 @@ class DefaultValue(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# set to None if array_string_nullable (nullable) is None # set to None if array_string_nullable (nullable) is None
@ -106,7 +106,7 @@ class DefaultValue(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of DefaultValue from a dict""" """Create an instance of DefaultValue from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -21,10 +21,8 @@ import json
from pydantic import BaseModel, Field, StrictFloat, StrictInt from pydantic import BaseModel, Field, StrictFloat, StrictInt
from typing import Any, ClassVar, Dict, List, Optional, Union from typing import Any, ClassVar, Dict, List, Optional, Union
from typing_extensions import Annotated from typing_extensions import Annotated
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class NumberPropertiesOnly(BaseModel): class NumberPropertiesOnly(BaseModel):
""" """
@ -52,7 +50,7 @@ class NumberPropertiesOnly(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of NumberPropertiesOnly from a JSON string""" """Create an instance of NumberPropertiesOnly from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -66,16 +64,18 @@ class NumberPropertiesOnly(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of NumberPropertiesOnly from a dict""" """Create an instance of NumberPropertiesOnly from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -22,10 +22,8 @@ from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.category import Category from openapi_client.models.category import Category
from openapi_client.models.tag import Tag from openapi_client.models.tag import Tag
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Pet(BaseModel): class Pet(BaseModel):
""" """
@ -66,7 +64,7 @@ class Pet(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Pet from a JSON string""" """Create an instance of Pet from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -80,10 +78,12 @@ class Pet(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of category # override the default output from pydantic by calling `to_dict()` of category
@ -99,7 +99,7 @@ class Pet(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Pet from a dict""" """Create an instance of Pet from a dict"""
if obj is None: if obj is None:
return None return None
@ -115,9 +115,9 @@ class Pet(BaseModel):
_obj = cls.model_validate({ _obj = cls.model_validate({
"id": obj.get("id"), "id": obj.get("id"),
"name": obj.get("name"), "name": obj.get("name"),
"category": Category.from_dict(obj.get("category")) if obj.get("category") is not None else None, "category": Category.from_dict(obj["category"]) if obj.get("category") is not None else None,
"photoUrls": obj.get("photoUrls"), "photoUrls": obj.get("photoUrls"),
"tags": [Tag.from_dict(_item) for _item in obj.get("tags")] if obj.get("tags") is not None else None, "tags": [Tag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None,
"status": obj.get("status") "status": obj.get("status")
}) })
return _obj return _obj

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Query(BaseModel): class Query(BaseModel):
""" """
@ -61,7 +59,7 @@ class Query(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Query from a JSON string""" """Create an instance of Query from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -75,16 +73,18 @@ class Query(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Dict) -> Optional[Self]:
"""Create an instance of Query from a dict""" """Create an instance of Query from a dict"""

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Tag(BaseModel): class Tag(BaseModel):
""" """
@ -50,7 +48,7 @@ class Tag(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Tag from a JSON string""" """Create an instance of Tag from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class Tag(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Tag from a dict""" """Create an instance of Tag from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseModel): class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseModel):
""" """
@ -52,7 +50,7 @@ class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseMod
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a JSON string""" """Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -66,16 +64,18 @@ class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseMod
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a dict""" """Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel): class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
""" """
@ -49,7 +47,7 @@ class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a JSON string""" """Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,16 +61,18 @@ class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a dict""" """Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -72,56 +72,45 @@ class RESTClientObject:
else: else:
cert_reqs = ssl.CERT_NONE cert_reqs = ssl.CERT_NONE
addition_pool_args = {} pool_args = {
"cert_reqs": cert_reqs,
"ca_certs": configuration.ssl_ca_cert,
"cert_file": configuration.cert_file,
"key_file": configuration.key_file,
}
if configuration.assert_hostname is not None: if configuration.assert_hostname is not None:
addition_pool_args['assert_hostname'] = ( pool_args['assert_hostname'] = (
configuration.assert_hostname configuration.assert_hostname
) )
if configuration.retries is not None: if configuration.retries is not None:
addition_pool_args['retries'] = configuration.retries pool_args['retries'] = configuration.retries
if configuration.tls_server_name: if configuration.tls_server_name:
addition_pool_args['server_hostname'] = configuration.tls_server_name pool_args['server_hostname'] = configuration.tls_server_name
if configuration.socket_options is not None: if configuration.socket_options is not None:
addition_pool_args['socket_options'] = configuration.socket_options pool_args['socket_options'] = configuration.socket_options
if configuration.connection_pool_maxsize is not None: if configuration.connection_pool_maxsize is not None:
addition_pool_args['maxsize'] = configuration.connection_pool_maxsize pool_args['maxsize'] = configuration.connection_pool_maxsize
# https pool manager # https pool manager
self.pool_manager: urllib3.PoolManager
if configuration.proxy: if configuration.proxy:
if is_socks_proxy_url(configuration.proxy): if is_socks_proxy_url(configuration.proxy):
from urllib3.contrib.socks import SOCKSProxyManager from urllib3.contrib.socks import SOCKSProxyManager
self.pool_manager = SOCKSProxyManager( pool_args["proxy_url"] = configuration.proxy
cert_reqs=cert_reqs, pool_args["headers"] = configuration.proxy_headers
ca_certs=configuration.ssl_ca_cert, self.pool_manager = SOCKSProxyManager(**pool_args)
cert_file=configuration.cert_file,
key_file=configuration.key_file,
proxy_url=configuration.proxy,
headers=configuration.proxy_headers,
**addition_pool_args
)
else: else:
self.pool_manager = urllib3.ProxyManager( pool_args["proxy_url"] = configuration.proxy
cert_reqs=cert_reqs, pool_args["proxy_headers"] = configuration.proxy_headers
ca_certs=configuration.ssl_ca_cert, self.pool_manager = urllib3.ProxyManager(**pool_args)
cert_file=configuration.cert_file,
key_file=configuration.key_file,
proxy_url=configuration.proxy,
proxy_headers=configuration.proxy_headers,
**addition_pool_args
)
else: else:
self.pool_manager = urllib3.PoolManager( self.pool_manager = urllib3.PoolManager(**pool_args)
cert_reqs=cert_reqs,
ca_certs=configuration.ssl_ca_cert,
cert_file=configuration.cert_file,
key_file=configuration.key_file,
**addition_pool_args
)
def request( def request(
self, self,

View File

@ -21,6 +21,9 @@ typing-extensions = ">=4.7.1"
pytest = ">=7.2.1" pytest = ">=7.2.1"
tox = ">=3.9.0" tox = ">=3.9.0"
flake8 = ">=4.0.0" flake8 = ">=4.0.0"
types-python-dateutil = ">=2.8.19.14"
mypy = "1.4.1"
[build-system] [build-system]
requires = ["setuptools"] requires = ["setuptools"]
@ -28,3 +31,10 @@ build-backend = "setuptools.build_meta"
[tool.pylint.'MESSAGES CONTROL'] [tool.pylint.'MESSAGES CONTROL']
extension-pkg-whitelist = "pydantic" extension-pkg-whitelist = "pydantic"
[tool.mypy]
files = [
"openapi_client",
#"test", # auto-generated tests
"tests", # hand-written tests
]

View File

@ -1,3 +1,5 @@
pytest~=7.1.3 pytest~=7.1.3
pytest-cov>=2.8.1 pytest-cov>=2.8.1
pytest-randomly>=3.12.0 pytest-randomly>=3.12.0
mypy>=1.4.1
types-python-dateutil>=2.8.19

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from openapi_client.api_client import ApiClient from openapi_client.api_client import ApiClient

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field, StrictBytes, StrictStr from pydantic import Field, StrictBytes, StrictStr
from typing import Any, Dict, List, Optional, Union from typing import Any, Dict, List, Optional, Union

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import StrictBool, StrictInt, StrictStr from pydantic import StrictBool, StrictInt, StrictStr
from typing import Optional from typing import Optional

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import StrictBool, StrictInt, StrictStr, field_validator from pydantic import StrictBool, StrictInt, StrictStr, field_validator
from typing import Optional from typing import Optional

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import StrictInt, StrictStr, field_validator from pydantic import StrictInt, StrictStr, field_validator
from openapi_client.models.string_enum_ref import StringEnumRef from openapi_client.models.string_enum_ref import StringEnumRef

View File

@ -15,11 +15,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from datetime import date, datetime from datetime import date, datetime
from pydantic import StrictBool, StrictInt, StrictStr, field_validator from pydantic import StrictBool, StrictInt, StrictStr, field_validator

View File

@ -273,15 +273,13 @@ class ApiClient:
) )
except ApiException as e: except ApiException as e:
if e.body:
e.body = e.body.decode('utf-8')
raise e raise e
return response_data return response_data
def response_deserialize( def response_deserialize(
self, self,
response_data: rest.RESTResponse = None, response_data: rest.RESTResponse,
response_types_map=None response_types_map=None
) -> ApiResponse: ) -> ApiResponse:
"""Deserializes response into an object. """Deserializes response into an object.
@ -290,6 +288,8 @@ class ApiClient:
:return: ApiResponse :return: ApiResponse
""" """
msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
assert response_data.data is not None, msg
response_type = response_types_map.get(str(response_data.status), None) response_type = response_types_map.get(str(response_data.status), None)
if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:

View File

@ -1,8 +1,8 @@
"""API response object.""" """API response object."""
from __future__ import annotations from __future__ import annotations
from typing import Dict, Optional, Generic, TypeVar from typing import Optional, Generic, Mapping, TypeVar
from pydantic import Field, StrictInt, StrictStr, StrictBytes, BaseModel from pydantic import Field, StrictInt, StrictBytes, BaseModel
T = TypeVar("T") T = TypeVar("T")
@ -12,7 +12,7 @@ class ApiResponse(BaseModel, Generic[T]):
""" """
status_code: StrictInt = Field(description="HTTP status code") status_code: StrictInt = Field(description="HTTP status code")
headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers") headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers")
data: T = Field(description="Deserialized data given the data type") data: T = Field(description="Deserialized data given the data type")
raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") raw_data: StrictBytes = Field(description="Raw data (HTTP response body)")

View File

@ -13,7 +13,6 @@
""" # noqa: E501 """ # noqa: E501
from typing import Any, Optional from typing import Any, Optional
from typing_extensions import Self from typing_extensions import Self
class OpenApiException(Exception): class OpenApiException(Exception):

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Bird(BaseModel): class Bird(BaseModel):
""" """
@ -50,7 +48,7 @@ class Bird(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Bird from a JSON string""" """Create an instance of Bird from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class Bird(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Bird from a dict""" """Create an instance of Bird from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Category(BaseModel): class Category(BaseModel):
""" """
@ -50,7 +48,7 @@ class Category(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Category from a JSON string""" """Create an instance of Category from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class Category(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Category from a dict""" """Create an instance of Category from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -22,10 +22,8 @@ from datetime import datetime
from pydantic import Field, StrictStr from pydantic import Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.query import Query from openapi_client.models.query import Query
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class DataQuery(Query): class DataQuery(Query):
""" """
@ -53,7 +51,7 @@ class DataQuery(Query):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of DataQuery from a JSON string""" """Create an instance of DataQuery from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -67,16 +65,18 @@ class DataQuery(Query):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of DataQuery from a dict""" """Create an instance of DataQuery from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -21,10 +21,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr, field_validator from pydantic import BaseModel, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.string_enum_ref import StringEnumRef from openapi_client.models.string_enum_ref import StringEnumRef
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class DefaultValue(BaseModel): class DefaultValue(BaseModel):
""" """
@ -68,7 +66,7 @@ class DefaultValue(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of DefaultValue from a JSON string""" """Create an instance of DefaultValue from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -82,10 +80,12 @@ class DefaultValue(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# set to None if array_string_nullable (nullable) is None # set to None if array_string_nullable (nullable) is None
@ -106,7 +106,7 @@ class DefaultValue(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of DefaultValue from a dict""" """Create an instance of DefaultValue from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -21,10 +21,8 @@ import json
from pydantic import BaseModel, Field, StrictFloat, StrictInt from pydantic import BaseModel, Field, StrictFloat, StrictInt
from typing import Any, ClassVar, Dict, List, Optional, Union from typing import Any, ClassVar, Dict, List, Optional, Union
from typing_extensions import Annotated from typing_extensions import Annotated
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class NumberPropertiesOnly(BaseModel): class NumberPropertiesOnly(BaseModel):
""" """
@ -52,7 +50,7 @@ class NumberPropertiesOnly(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of NumberPropertiesOnly from a JSON string""" """Create an instance of NumberPropertiesOnly from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -66,16 +64,18 @@ class NumberPropertiesOnly(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of NumberPropertiesOnly from a dict""" """Create an instance of NumberPropertiesOnly from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -22,10 +22,8 @@ from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from openapi_client.models.category import Category from openapi_client.models.category import Category
from openapi_client.models.tag import Tag from openapi_client.models.tag import Tag
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Pet(BaseModel): class Pet(BaseModel):
""" """
@ -66,7 +64,7 @@ class Pet(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Pet from a JSON string""" """Create an instance of Pet from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -80,10 +78,12 @@ class Pet(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of category # override the default output from pydantic by calling `to_dict()` of category
@ -99,7 +99,7 @@ class Pet(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Pet from a dict""" """Create an instance of Pet from a dict"""
if obj is None: if obj is None:
return None return None
@ -110,9 +110,9 @@ class Pet(BaseModel):
_obj = cls.model_validate({ _obj = cls.model_validate({
"id": obj.get("id"), "id": obj.get("id"),
"name": obj.get("name"), "name": obj.get("name"),
"category": Category.from_dict(obj.get("category")) if obj.get("category") is not None else None, "category": Category.from_dict(obj["category"]) if obj.get("category") is not None else None,
"photoUrls": obj.get("photoUrls"), "photoUrls": obj.get("photoUrls"),
"tags": [Tag.from_dict(_item) for _item in obj.get("tags")] if obj.get("tags") is not None else None, "tags": [Tag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None,
"status": obj.get("status") "status": obj.get("status")
}) })
return _obj return _obj

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Query(BaseModel): class Query(BaseModel):
""" """
@ -61,7 +59,7 @@ class Query(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Query from a JSON string""" """Create an instance of Query from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -75,16 +73,18 @@ class Query(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Dict) -> Optional[Self]:
"""Create an instance of Query from a dict""" """Create an instance of Query from a dict"""

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Tag(BaseModel): class Tag(BaseModel):
""" """
@ -50,7 +48,7 @@ class Tag(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Tag from a JSON string""" """Create an instance of Tag from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class Tag(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Tag from a dict""" """Create an instance of Tag from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseModel): class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseModel):
""" """
@ -52,7 +50,7 @@ class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseMod
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a JSON string""" """Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -66,16 +64,18 @@ class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseMod
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a dict""" """Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel): class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
""" """
@ -49,7 +47,7 @@ class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a JSON string""" """Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,16 +61,18 @@ class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a dict""" """Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -72,56 +72,45 @@ class RESTClientObject:
else: else:
cert_reqs = ssl.CERT_NONE cert_reqs = ssl.CERT_NONE
addition_pool_args = {} pool_args = {
"cert_reqs": cert_reqs,
"ca_certs": configuration.ssl_ca_cert,
"cert_file": configuration.cert_file,
"key_file": configuration.key_file,
}
if configuration.assert_hostname is not None: if configuration.assert_hostname is not None:
addition_pool_args['assert_hostname'] = ( pool_args['assert_hostname'] = (
configuration.assert_hostname configuration.assert_hostname
) )
if configuration.retries is not None: if configuration.retries is not None:
addition_pool_args['retries'] = configuration.retries pool_args['retries'] = configuration.retries
if configuration.tls_server_name: if configuration.tls_server_name:
addition_pool_args['server_hostname'] = configuration.tls_server_name pool_args['server_hostname'] = configuration.tls_server_name
if configuration.socket_options is not None: if configuration.socket_options is not None:
addition_pool_args['socket_options'] = configuration.socket_options pool_args['socket_options'] = configuration.socket_options
if configuration.connection_pool_maxsize is not None: if configuration.connection_pool_maxsize is not None:
addition_pool_args['maxsize'] = configuration.connection_pool_maxsize pool_args['maxsize'] = configuration.connection_pool_maxsize
# https pool manager # https pool manager
self.pool_manager: urllib3.PoolManager
if configuration.proxy: if configuration.proxy:
if is_socks_proxy_url(configuration.proxy): if is_socks_proxy_url(configuration.proxy):
from urllib3.contrib.socks import SOCKSProxyManager from urllib3.contrib.socks import SOCKSProxyManager
self.pool_manager = SOCKSProxyManager( pool_args["proxy_url"] = configuration.proxy
cert_reqs=cert_reqs, pool_args["headers"] = configuration.proxy_headers
ca_certs=configuration.ssl_ca_cert, self.pool_manager = SOCKSProxyManager(**pool_args)
cert_file=configuration.cert_file,
key_file=configuration.key_file,
proxy_url=configuration.proxy,
headers=configuration.proxy_headers,
**addition_pool_args
)
else: else:
self.pool_manager = urllib3.ProxyManager( pool_args["proxy_url"] = configuration.proxy
cert_reqs=cert_reqs, pool_args["proxy_headers"] = configuration.proxy_headers
ca_certs=configuration.ssl_ca_cert, self.pool_manager = urllib3.ProxyManager(**pool_args)
cert_file=configuration.cert_file,
key_file=configuration.key_file,
proxy_url=configuration.proxy,
proxy_headers=configuration.proxy_headers,
**addition_pool_args
)
else: else:
self.pool_manager = urllib3.PoolManager( self.pool_manager = urllib3.PoolManager(**pool_args)
cert_reqs=cert_reqs,
ca_certs=configuration.ssl_ca_cert,
cert_file=configuration.cert_file,
key_file=configuration.key_file,
**addition_pool_args
)
def request( def request(
self, self,

614
samples/client/echo_api/python/poetry.lock generated Normal file
View File

@ -0,0 +1,614 @@
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
[[package]]
name = "annotated-types"
version = "0.5.0"
description = "Reusable constraint types to use with typing.Annotated"
optional = false
python-versions = ">=3.7"
files = [
{file = "annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"},
{file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"},
]
[package.dependencies]
typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
[[package]]
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
[[package]]
name = "distlib"
version = "0.3.8"
description = "Distribution utilities"
optional = false
python-versions = "*"
files = [
{file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
{file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
]
[[package]]
name = "exceptiongroup"
version = "1.2.0"
description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
files = [
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
{file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
]
[package.extras]
test = ["pytest (>=6)"]
[[package]]
name = "filelock"
version = "3.12.2"
description = "A platform independent file lock."
optional = false
python-versions = ">=3.7"
files = [
{file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"},
{file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"},
]
[package.extras]
docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
[[package]]
name = "flake8"
version = "5.0.4"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
python-versions = ">=3.6.1"
files = [
{file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
{file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
]
[package.dependencies]
importlib-metadata = {version = ">=1.1.0,<4.3", markers = "python_version < \"3.8\""}
mccabe = ">=0.7.0,<0.8.0"
pycodestyle = ">=2.9.0,<2.10.0"
pyflakes = ">=2.5.0,<2.6.0"
[[package]]
name = "importlib-metadata"
version = "4.2.0"
description = "Read metadata from Python packages"
optional = false
python-versions = ">=3.6"
files = [
{file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"},
{file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"},
]
[package.dependencies]
typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
zipp = ">=0.5"
[package.extras]
docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"]
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517", "pyfakefs", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"]
[[package]]
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.7"
files = [
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
[[package]]
name = "mccabe"
version = "0.7.0"
description = "McCabe checker, plugin for flake8"
optional = false
python-versions = ">=3.6"
files = [
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
[[package]]
name = "mypy"
version = "1.4.1"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.7"
files = [
{file = "mypy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8"},
{file = "mypy-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878"},
{file = "mypy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd"},
{file = "mypy-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc"},
{file = "mypy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1"},
{file = "mypy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462"},
{file = "mypy-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258"},
{file = "mypy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2"},
{file = "mypy-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7"},
{file = "mypy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01"},
{file = "mypy-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b"},
{file = "mypy-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b"},
{file = "mypy-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7"},
{file = "mypy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9"},
{file = "mypy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042"},
{file = "mypy-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3"},
{file = "mypy-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6"},
{file = "mypy-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f"},
{file = "mypy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc"},
{file = "mypy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828"},
{file = "mypy-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3"},
{file = "mypy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816"},
{file = "mypy-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c"},
{file = "mypy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f"},
{file = "mypy-1.4.1-py3-none-any.whl", hash = "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4"},
{file = "mypy-1.4.1.tar.gz", hash = "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b"},
]
[package.dependencies]
mypy-extensions = ">=1.0.0"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typed-ast = {version = ">=1.4.0,<2", markers = "python_version < \"3.8\""}
typing-extensions = ">=4.1.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
install-types = ["pip"]
python2 = ["typed-ast (>=1.4.0,<2)"]
reports = ["lxml"]
[[package]]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
optional = false
python-versions = ">=3.5"
files = [
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
]
[[package]]
name = "packaging"
version = "23.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.7"
files = [
{file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
{file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
[[package]]
name = "platformdirs"
version = "2.6.2"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
optional = false
python-versions = ">=3.7"
files = [
{file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"},
{file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"},
]
[package.dependencies]
typing-extensions = {version = ">=4.4", markers = "python_version < \"3.8\""}
[package.extras]
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
[[package]]
name = "pluggy"
version = "1.2.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.7"
files = [
{file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
{file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
]
[package.dependencies]
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
[package.extras]
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "py"
version = "1.11.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
]
[[package]]
name = "pycodestyle"
version = "2.9.1"
description = "Python style guide checker"
optional = false
python-versions = ">=3.6"
files = [
{file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
{file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
]
[[package]]
name = "pydantic"
version = "2.5.3"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.7"
files = [
{file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"},
{file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"},
]
[package.dependencies]
annotated-types = ">=0.4.0"
importlib-metadata = {version = "*", markers = "python_version == \"3.7\""}
pydantic-core = "2.14.6"
typing-extensions = ">=4.6.1"
[package.extras]
email = ["email-validator (>=2.0.0)"]
[[package]]
name = "pydantic-core"
version = "2.14.6"
description = ""
optional = false
python-versions = ">=3.7"
files = [
{file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"},
{file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"},
{file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"},
{file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"},
{file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"},
{file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"},
{file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"},
{file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"},
{file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"},
{file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"},
{file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"},
{file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"},
{file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"},
{file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"},
{file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"},
{file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"},
{file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"},
{file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"},
{file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"},
{file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"},
{file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"},
{file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"},
{file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"},
{file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"},
{file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"},
{file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"},
{file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"},
{file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"},
{file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"},
{file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"},
{file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"},
{file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"},
{file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"},
{file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"},
{file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"},
{file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"},
{file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"},
{file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"},
{file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"},
{file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"},
{file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"},
{file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"},
{file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"},
{file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"},
{file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"},
{file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"},
{file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"},
{file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"},
{file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"},
{file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"},
{file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"},
{file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"},
{file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"},
{file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"},
{file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"},
{file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"},
{file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"},
{file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"},
{file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"},
{file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"},
{file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"},
{file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"},
{file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"},
{file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"},
{file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"},
{file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"},
{file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"},
{file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"},
{file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"},
{file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"},
{file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"},
{file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"},
{file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"},
{file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"},
{file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"},
{file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"},
{file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"},
{file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"},
{file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"},
{file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"},
{file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"},
{file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"},
{file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"},
{file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"},
]
[package.dependencies]
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
[[package]]
name = "pyflakes"
version = "2.5.0"
description = "passive checker of Python programs"
optional = false
python-versions = ">=3.6"
files = [
{file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
{file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
]
[[package]]
name = "pytest"
version = "7.4.4"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.7"
files = [
{file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
{file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
]
[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<2.0"
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
[package.extras]
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
[package.dependencies]
six = ">=1.5"
[[package]]
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.7"
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
[[package]]
name = "tox"
version = "3.28.0"
description = "tox is a generic virtualenv management and test command line tool"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
{file = "tox-3.28.0-py2.py3-none-any.whl", hash = "sha256:57b5ab7e8bb3074edc3c0c0b4b192a4f3799d3723b2c5b76f1fa9f2d40316eea"},
{file = "tox-3.28.0.tar.gz", hash = "sha256:d0d28f3fe6d6d7195c27f8b054c3e99d5451952b54abdae673b71609a581f640"},
]
[package.dependencies]
colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""}
filelock = ">=3.0.0"
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
packaging = ">=14"
pluggy = ">=0.12.0"
py = ">=1.4.17"
six = ">=1.14.0"
tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""}
virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7"
[package.extras]
docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"]
testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"]
[[package]]
name = "typed-ast"
version = "1.5.5"
description = "a fork of Python 2 and 3 ast modules with type comment support"
optional = false
python-versions = ">=3.6"
files = [
{file = "typed_ast-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b"},
{file = "typed_ast-1.5.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f7a8c46a8b333f71abd61d7ab9255440d4a588f34a21f126bbfc95f6049e686"},
{file = "typed_ast-1.5.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597fc66b4162f959ee6a96b978c0435bd63791e31e4f410622d19f1686d5e769"},
{file = "typed_ast-1.5.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d41b7a686ce653e06c2609075d397ebd5b969d821b9797d029fccd71fdec8e04"},
{file = "typed_ast-1.5.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5fe83a9a44c4ce67c796a1b466c270c1272e176603d5e06f6afbc101a572859d"},
{file = "typed_ast-1.5.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d5c0c112a74c0e5db2c75882a0adf3133adedcdbfd8cf7c9d6ed77365ab90a1d"},
{file = "typed_ast-1.5.5-cp310-cp310-win_amd64.whl", hash = "sha256:e1a976ed4cc2d71bb073e1b2a250892a6e968ff02aa14c1f40eba4f365ffec02"},
{file = "typed_ast-1.5.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c631da9710271cb67b08bd3f3813b7af7f4c69c319b75475436fcab8c3d21bee"},
{file = "typed_ast-1.5.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b445c2abfecab89a932b20bd8261488d574591173d07827c1eda32c457358b18"},
{file = "typed_ast-1.5.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc95ffaaab2be3b25eb938779e43f513e0e538a84dd14a5d844b8f2932593d88"},
{file = "typed_ast-1.5.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61443214d9b4c660dcf4b5307f15c12cb30bdfe9588ce6158f4a005baeb167b2"},
{file = "typed_ast-1.5.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6eb936d107e4d474940469e8ec5b380c9b329b5f08b78282d46baeebd3692dc9"},
{file = "typed_ast-1.5.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e48bf27022897577d8479eaed64701ecaf0467182448bd95759883300ca818c8"},
{file = "typed_ast-1.5.5-cp311-cp311-win_amd64.whl", hash = "sha256:83509f9324011c9a39faaef0922c6f720f9623afe3fe220b6d0b15638247206b"},
{file = "typed_ast-1.5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:44f214394fc1af23ca6d4e9e744804d890045d1643dd7e8229951e0ef39429b5"},
{file = "typed_ast-1.5.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:118c1ce46ce58fda78503eae14b7664163aa735b620b64b5b725453696f2a35c"},
{file = "typed_ast-1.5.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be4919b808efa61101456e87f2d4c75b228f4e52618621c77f1ddcaae15904fa"},
{file = "typed_ast-1.5.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fc2b8c4e1bc5cd96c1a823a885e6b158f8451cf6f5530e1829390b4d27d0807f"},
{file = "typed_ast-1.5.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:16f7313e0a08c7de57f2998c85e2a69a642e97cb32f87eb65fbfe88381a5e44d"},
{file = "typed_ast-1.5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:2b946ef8c04f77230489f75b4b5a4a6f24c078be4aed241cfabe9cbf4156e7e5"},
{file = "typed_ast-1.5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2188bc33d85951ea4ddad55d2b35598b2709d122c11c75cffd529fbc9965508e"},
{file = "typed_ast-1.5.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0635900d16ae133cab3b26c607586131269f88266954eb04ec31535c9a12ef1e"},
{file = "typed_ast-1.5.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57bfc3cf35a0f2fdf0a88a3044aafaec1d2f24d8ae8cd87c4f58d615fb5b6311"},
{file = "typed_ast-1.5.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:fe58ef6a764de7b4b36edfc8592641f56e69b7163bba9f9c8089838ee596bfb2"},
{file = "typed_ast-1.5.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d09d930c2d1d621f717bb217bf1fe2584616febb5138d9b3e8cdd26506c3f6d4"},
{file = "typed_ast-1.5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:d40c10326893ecab8a80a53039164a224984339b2c32a6baf55ecbd5b1df6431"},
{file = "typed_ast-1.5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fd946abf3c31fb50eee07451a6aedbfff912fcd13cf357363f5b4e834cc5e71a"},
{file = "typed_ast-1.5.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ed4a1a42df8a3dfb6b40c3d2de109e935949f2f66b19703eafade03173f8f437"},
{file = "typed_ast-1.5.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:045f9930a1550d9352464e5149710d56a2aed23a2ffe78946478f7b5416f1ede"},
{file = "typed_ast-1.5.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:381eed9c95484ceef5ced626355fdc0765ab51d8553fec08661dce654a935db4"},
{file = "typed_ast-1.5.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bfd39a41c0ef6f31684daff53befddae608f9daf6957140228a08e51f312d7e6"},
{file = "typed_ast-1.5.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8c524eb3024edcc04e288db9541fe1f438f82d281e591c548903d5b77ad1ddd4"},
{file = "typed_ast-1.5.5-cp38-cp38-win_amd64.whl", hash = "sha256:7f58fabdde8dcbe764cef5e1a7fcb440f2463c1bbbec1cf2a86ca7bc1f95184b"},
{file = "typed_ast-1.5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:042eb665ff6bf020dd2243307d11ed626306b82812aba21836096d229fdc6a10"},
{file = "typed_ast-1.5.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:622e4a006472b05cf6ef7f9f2636edc51bda670b7bbffa18d26b255269d3d814"},
{file = "typed_ast-1.5.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1efebbbf4604ad1283e963e8915daa240cb4bf5067053cf2f0baadc4d4fb51b8"},
{file = "typed_ast-1.5.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0aefdd66f1784c58f65b502b6cf8b121544680456d1cebbd300c2c813899274"},
{file = "typed_ast-1.5.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:48074261a842acf825af1968cd912f6f21357316080ebaca5f19abbb11690c8a"},
{file = "typed_ast-1.5.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:429ae404f69dc94b9361bb62291885894b7c6fb4640d561179548c849f8492ba"},
{file = "typed_ast-1.5.5-cp39-cp39-win_amd64.whl", hash = "sha256:335f22ccb244da2b5c296e6f96b06ee9bed46526db0de38d2f0e5a6597b81155"},
{file = "typed_ast-1.5.5.tar.gz", hash = "sha256:94282f7a354f36ef5dbce0ef3467ebf6a258e370ab33d5b40c249fa996e590dd"},
]
[[package]]
name = "types-python-dateutil"
version = "2.8.19.14"
description = "Typing stubs for python-dateutil"
optional = false
python-versions = "*"
files = [
{file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"},
{file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"},
]
[[package]]
name = "typing-extensions"
version = "4.7.1"
description = "Backported and Experimental Type Hints for Python 3.7+"
optional = false
python-versions = ">=3.7"
files = [
{file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"},
{file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"},
]
[[package]]
name = "urllib3"
version = "2.0.7"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.7"
files = [
{file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"},
{file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"},
]
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "virtualenv"
version = "20.16.2"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.6"
files = [
{file = "virtualenv-20.16.2-py2.py3-none-any.whl", hash = "sha256:635b272a8e2f77cb051946f46c60a54ace3cb5e25568228bd6b57fc70eca9ff3"},
{file = "virtualenv-20.16.2.tar.gz", hash = "sha256:0ef5be6d07181946891f5abc8047fda8bc2f0b4b9bf222c64e6e8963baee76db"},
]
[package.dependencies]
distlib = ">=0.3.1,<1"
filelock = ">=3.2,<4"
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
platformdirs = ">=2,<3"
[package.extras]
docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"]
testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "packaging (>=20.0)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)"]
[[package]]
name = "zipp"
version = "3.15.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=3.7"
files = [
{file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
{file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
[metadata]
lock-version = "2.0"
python-versions = "^3.7"
content-hash = "e3db4fda1f09507e7001e5eccf6e0827b049b9384dba0fe21c7e1ff0a118503d"

View File

@ -21,6 +21,9 @@ typing-extensions = ">=4.7.1"
pytest = ">=7.2.1" pytest = ">=7.2.1"
tox = ">=3.9.0" tox = ">=3.9.0"
flake8 = ">=4.0.0" flake8 = ">=4.0.0"
types-python-dateutil = ">=2.8.19.14"
mypy = "1.4.1"
[build-system] [build-system]
requires = ["setuptools"] requires = ["setuptools"]
@ -28,3 +31,10 @@ build-backend = "setuptools.build_meta"
[tool.pylint.'MESSAGES CONTROL'] [tool.pylint.'MESSAGES CONTROL']
extension-pkg-whitelist = "pydantic" extension-pkg-whitelist = "pydantic"
[tool.mypy]
files = [
"openapi_client",
#"test", # auto-generated tests
"tests", # hand-written tests
]

View File

@ -1,3 +1,5 @@
pytest~=7.1.3 pytest~=7.1.3
pytest-cov>=2.8.1 pytest-cov>=2.8.1
pytest-randomly>=3.12.0 pytest-randomly>=3.12.0
mypy>=1.4.1
types-python-dateutil>=2.8.19

View File

@ -12,7 +12,6 @@ docs/Animal.md
docs/AnotherFakeApi.md docs/AnotherFakeApi.md
docs/AnyOfColor.md docs/AnyOfColor.md
docs/AnyOfPig.md docs/AnyOfPig.md
docs/ApiResponse.md
docs/ArrayOfArrayOfModel.md docs/ArrayOfArrayOfModel.md
docs/ArrayOfArrayOfNumberOnly.md docs/ArrayOfArrayOfNumberOnly.md
docs/ArrayOfNumberOnly.md docs/ArrayOfNumberOnly.md
@ -54,6 +53,7 @@ docs/MapOfArrayOfModel.md
docs/MapTest.md docs/MapTest.md
docs/MixedPropertiesAndAdditionalPropertiesClass.md docs/MixedPropertiesAndAdditionalPropertiesClass.md
docs/Model200Response.md docs/Model200Response.md
docs/ModelApiResponse.md
docs/ModelReturn.md docs/ModelReturn.md
docs/Name.md docs/Name.md
docs/NullableClass.md docs/NullableClass.md
@ -116,7 +116,6 @@ petstore_api/models/all_of_with_single_ref.py
petstore_api/models/animal.py petstore_api/models/animal.py
petstore_api/models/any_of_color.py petstore_api/models/any_of_color.py
petstore_api/models/any_of_pig.py petstore_api/models/any_of_pig.py
petstore_api/models/api_response.py
petstore_api/models/array_of_array_of_model.py petstore_api/models/array_of_array_of_model.py
petstore_api/models/array_of_array_of_number_only.py petstore_api/models/array_of_array_of_number_only.py
petstore_api/models/array_of_number_only.py petstore_api/models/array_of_number_only.py
@ -155,6 +154,7 @@ petstore_api/models/map_of_array_of_model.py
petstore_api/models/map_test.py petstore_api/models/map_test.py
petstore_api/models/mixed_properties_and_additional_properties_class.py petstore_api/models/mixed_properties_and_additional_properties_class.py
petstore_api/models/model200_response.py petstore_api/models/model200_response.py
petstore_api/models/model_api_response.py
petstore_api/models/model_return.py petstore_api/models/model_return.py
petstore_api/models/name.py petstore_api/models/name.py
petstore_api/models/nullable_class.py petstore_api/models/nullable_class.py

View File

@ -146,7 +146,6 @@ Class | Method | HTTP request | Description
- [Animal](docs/Animal.md) - [Animal](docs/Animal.md)
- [AnyOfColor](docs/AnyOfColor.md) - [AnyOfColor](docs/AnyOfColor.md)
- [AnyOfPig](docs/AnyOfPig.md) - [AnyOfPig](docs/AnyOfPig.md)
- [ApiResponse](docs/ApiResponse.md)
- [ArrayOfArrayOfModel](docs/ArrayOfArrayOfModel.md) - [ArrayOfArrayOfModel](docs/ArrayOfArrayOfModel.md)
- [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
- [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
@ -185,6 +184,7 @@ Class | Method | HTTP request | Description
- [MapTest](docs/MapTest.md) - [MapTest](docs/MapTest.md)
- [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) - [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
- [Model200Response](docs/Model200Response.md) - [Model200Response](docs/Model200Response.md)
- [ModelApiResponse](docs/ModelApiResponse.md)
- [ModelReturn](docs/ModelReturn.md) - [ModelReturn](docs/ModelReturn.md)
- [Name](docs/Name.md) - [Name](docs/Name.md)
- [NullableClass](docs/NullableClass.md) - [NullableClass](docs/NullableClass.md)

View File

@ -1,4 +1,4 @@
# ApiResponse # ModelApiResponse
## Properties ## Properties
@ -12,19 +12,19 @@ Name | Type | Description | Notes
## Example ## Example
```python ```python
from petstore_api.models.api_response import ApiResponse from petstore_api.models.model_api_response import ModelApiResponse
# TODO update the JSON string below # TODO update the JSON string below
json = "{}" json = "{}"
# create an instance of ApiResponse from a JSON string # create an instance of ModelApiResponse from a JSON string
api_response_instance = ApiResponse.from_json(json) model_api_response_instance = ModelApiResponse.from_json(json)
# print the JSON string representation of the object # print the JSON string representation of the object
print ApiResponse.to_json() print ModelApiResponse.to_json()
# convert the object into a dict # convert the object into a dict
api_response_dict = api_response_instance.to_dict() model_api_response_dict = model_api_response_instance.to_dict()
# create an instance of ApiResponse from a dict # create an instance of ModelApiResponse from a dict
api_response_form_dict = api_response.from_dict(api_response_dict) model_api_response_form_dict = model_api_response.from_dict(model_api_response_dict)
``` ```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -803,7 +803,7 @@ void (empty response body)
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **upload_file** # **upload_file**
> ApiResponse upload_file(pet_id, additional_metadata=additional_metadata, file=file) > ModelApiResponse upload_file(pet_id, additional_metadata=additional_metadata, file=file)
uploads an image uploads an image
@ -815,7 +815,7 @@ uploads an image
```python ```python
import petstore_api import petstore_api
from petstore_api.models.api_response import ApiResponse from petstore_api.models.model_api_response import ModelApiResponse
from petstore_api.rest import ApiException from petstore_api.rest import ApiException
from pprint import pprint from pprint import pprint
@ -862,7 +862,7 @@ Name | Type | Description | Notes
### Return type ### Return type
[**ApiResponse**](ApiResponse.md) [**ModelApiResponse**](ModelApiResponse.md)
### Authorization ### Authorization
@ -882,7 +882,7 @@ Name | Type | Description | Notes
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **upload_file_with_required_file** # **upload_file_with_required_file**
> ApiResponse upload_file_with_required_file(pet_id, required_file, additional_metadata=additional_metadata) > ModelApiResponse upload_file_with_required_file(pet_id, required_file, additional_metadata=additional_metadata)
uploads an image (required) uploads an image (required)
@ -894,7 +894,7 @@ uploads an image (required)
```python ```python
import petstore_api import petstore_api
from petstore_api.models.api_response import ApiResponse from petstore_api.models.model_api_response import ModelApiResponse
from petstore_api.rest import ApiException from petstore_api.rest import ApiException
from pprint import pprint from pprint import pprint
@ -941,7 +941,7 @@ Name | Type | Description | Notes
### Return type ### Return type
[**ApiResponse**](ApiResponse.md) [**ModelApiResponse**](ModelApiResponse.md)
### Authorization ### Authorization

View File

@ -5,9 +5,9 @@
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**underscore_type** | **str** | | [optional]
**type** | **str** | | [optional] **type** | **str** | | [optional]
**type** | **str** | | [optional] **type_with_underscore** | **str** | | [optional]
**type_** | **str** | | [optional]
## Example ## Example

View File

@ -46,7 +46,6 @@ from petstore_api.models.all_of_with_single_ref import AllOfWithSingleRef
from petstore_api.models.animal import Animal from petstore_api.models.animal import Animal
from petstore_api.models.any_of_color import AnyOfColor from petstore_api.models.any_of_color import AnyOfColor
from petstore_api.models.any_of_pig import AnyOfPig from petstore_api.models.any_of_pig import AnyOfPig
from petstore_api.models.api_response import ApiResponse
from petstore_api.models.array_of_array_of_model import ArrayOfArrayOfModel from petstore_api.models.array_of_array_of_model import ArrayOfArrayOfModel
from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly
from petstore_api.models.array_of_number_only import ArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly
@ -85,6 +84,7 @@ from petstore_api.models.map_of_array_of_model import MapOfArrayOfModel
from petstore_api.models.map_test import MapTest from petstore_api.models.map_test import MapTest
from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass
from petstore_api.models.model200_response import Model200Response from petstore_api.models.model200_response import Model200Response
from petstore_api.models.model_api_response import ModelApiResponse
from petstore_api.models.model_return import ModelReturn from petstore_api.models.model_return import ModelReturn
from petstore_api.models.name import Name from petstore_api.models.name import Name
from petstore_api.models.nullable_class import NullableClass from petstore_api.models.nullable_class import NullableClass

View File

@ -14,11 +14,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field from pydantic import Field
from typing_extensions import Annotated from typing_extensions import Annotated

View File

@ -14,11 +14,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from petstore_api.models.foo_get_default_response import FooGetDefaultResponse from petstore_api.models.foo_get_default_response import FooGetDefaultResponse

View File

@ -14,11 +14,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from datetime import date, datetime from datetime import date, datetime
from pydantic import Field, StrictBool, StrictBytes, StrictInt, StrictStr, field_validator from pydantic import Field, StrictBool, StrictBytes, StrictInt, StrictStr, field_validator

View File

@ -14,11 +14,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field from pydantic import Field
from typing_extensions import Annotated from typing_extensions import Annotated

View File

@ -14,16 +14,12 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field, StrictBytes, StrictInt, StrictStr, field_validator from pydantic import Field, StrictBytes, StrictInt, StrictStr, field_validator
from typing import List, Optional, Union from typing import List, Optional, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from petstore_api.models.api_response import ApiResponse from petstore_api.models.model_api_response import ModelApiResponse
from petstore_api.models.pet import Pet from petstore_api.models.pet import Pet
from petstore_api.api_client import ApiClient from petstore_api.api_client import ApiClient
@ -1976,7 +1972,7 @@ class PetApi:
_content_type: Optional[StrictStr] = None, _content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None, _headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse: ) -> ModelApiResponse:
"""uploads an image """uploads an image
@ -2020,7 +2016,7 @@ class PetApi:
) )
_response_types_map: Dict[str, Optional[str]] = { _response_types_map: Dict[str, Optional[str]] = {
'200': "ApiResponse", '200': "ModelApiResponse",
} }
response_data = await self.api_client.call_api( response_data = await self.api_client.call_api(
*_param, *_param,
@ -2051,7 +2047,7 @@ class PetApi:
_content_type: Optional[StrictStr] = None, _content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None, _headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[ApiResponse]: ) -> ApiResponse[ModelApiResponse]:
"""uploads an image """uploads an image
@ -2095,7 +2091,7 @@ class PetApi:
) )
_response_types_map: Dict[str, Optional[str]] = { _response_types_map: Dict[str, Optional[str]] = {
'200': "ApiResponse", '200': "ModelApiResponse",
} }
response_data = await self.api_client.call_api( response_data = await self.api_client.call_api(
*_param, *_param,
@ -2170,7 +2166,7 @@ class PetApi:
) )
_response_types_map: Dict[str, Optional[str]] = { _response_types_map: Dict[str, Optional[str]] = {
'200': "ApiResponse", '200': "ModelApiResponse",
} }
response_data = await self.api_client.call_api( response_data = await self.api_client.call_api(
*_param, *_param,
@ -2277,7 +2273,7 @@ class PetApi:
_content_type: Optional[StrictStr] = None, _content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None, _headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse: ) -> ModelApiResponse:
"""uploads an image (required) """uploads an image (required)
@ -2321,7 +2317,7 @@ class PetApi:
) )
_response_types_map: Dict[str, Optional[str]] = { _response_types_map: Dict[str, Optional[str]] = {
'200': "ApiResponse", '200': "ModelApiResponse",
} }
response_data = await self.api_client.call_api( response_data = await self.api_client.call_api(
*_param, *_param,
@ -2352,7 +2348,7 @@ class PetApi:
_content_type: Optional[StrictStr] = None, _content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None, _headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[ApiResponse]: ) -> ApiResponse[ModelApiResponse]:
"""uploads an image (required) """uploads an image (required)
@ -2396,7 +2392,7 @@ class PetApi:
) )
_response_types_map: Dict[str, Optional[str]] = { _response_types_map: Dict[str, Optional[str]] = {
'200': "ApiResponse", '200': "ModelApiResponse",
} }
response_data = await self.api_client.call_api( response_data = await self.api_client.call_api(
*_param, *_param,
@ -2471,7 +2467,7 @@ class PetApi:
) )
_response_types_map: Dict[str, Optional[str]] = { _response_types_map: Dict[str, Optional[str]] = {
'200': "ApiResponse", '200': "ModelApiResponse",
} }
response_data = await self.api_client.call_api( response_data = await self.api_client.call_api(
*_param, *_param,

View File

@ -14,11 +14,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field, StrictStr from pydantic import Field, StrictStr
from typing_extensions import Annotated from typing_extensions import Annotated

View File

@ -14,11 +14,7 @@
import warnings import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated
try:
from typing import Annotated
except ImportError:
from typing_extensions import Annotated
from pydantic import Field, StrictStr from pydantic import Field, StrictStr
from typing import List from typing import List

View File

@ -275,15 +275,13 @@ class ApiClient:
) )
except ApiException as e: except ApiException as e:
if e.body:
e.body = e.body.decode('utf-8')
raise e raise e
return response_data return response_data
def response_deserialize( def response_deserialize(
self, self,
response_data: rest.RESTResponse = None, response_data: rest.RESTResponse,
response_types_map=None response_types_map=None
) -> ApiResponse: ) -> ApiResponse:
"""Deserializes response into an object. """Deserializes response into an object.
@ -292,6 +290,8 @@ class ApiClient:
:return: ApiResponse :return: ApiResponse
""" """
msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
assert response_data.data is not None, msg
response_type = response_types_map.get(str(response_data.status), None) response_type = response_types_map.get(str(response_data.status), None)
if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:

View File

@ -1,8 +1,8 @@
"""API response object.""" """API response object."""
from __future__ import annotations from __future__ import annotations
from typing import Dict, Optional, Generic, TypeVar from typing import Optional, Generic, Mapping, TypeVar
from pydantic import Field, StrictInt, StrictStr, StrictBytes, BaseModel from pydantic import Field, StrictInt, StrictBytes, BaseModel
T = TypeVar("T") T = TypeVar("T")
@ -12,7 +12,7 @@ class ApiResponse(BaseModel, Generic[T]):
""" """
status_code: StrictInt = Field(description="HTTP status code") status_code: StrictInt = Field(description="HTTP status code")
headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers") headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers")
data: T = Field(description="Deserialized data given the data type") data: T = Field(description="Deserialized data given the data type")
raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") raw_data: StrictBytes = Field(description="Raw data (HTTP response body)")

View File

@ -12,7 +12,6 @@
""" # noqa: E501 """ # noqa: E501
from typing import Any, Optional from typing import Any, Optional
from typing_extensions import Self from typing_extensions import Self
class OpenApiException(Exception): class OpenApiException(Exception):

View File

@ -22,7 +22,6 @@ from petstore_api.models.all_of_with_single_ref import AllOfWithSingleRef
from petstore_api.models.animal import Animal from petstore_api.models.animal import Animal
from petstore_api.models.any_of_color import AnyOfColor from petstore_api.models.any_of_color import AnyOfColor
from petstore_api.models.any_of_pig import AnyOfPig from petstore_api.models.any_of_pig import AnyOfPig
from petstore_api.models.api_response import ApiResponse
from petstore_api.models.array_of_array_of_model import ArrayOfArrayOfModel from petstore_api.models.array_of_array_of_model import ArrayOfArrayOfModel
from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly
from petstore_api.models.array_of_number_only import ArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly
@ -61,6 +60,7 @@ from petstore_api.models.map_of_array_of_model import MapOfArrayOfModel
from petstore_api.models.map_test import MapTest from petstore_api.models.map_test import MapTest
from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass
from petstore_api.models.model200_response import Model200Response from petstore_api.models.model200_response import Model200Response
from petstore_api.models.model_api_response import ModelApiResponse
from petstore_api.models.model_return import ModelReturn from petstore_api.models.model_return import ModelReturn
from petstore_api.models.name import Name from petstore_api.models.name import Name
from petstore_api.models.nullable_class import NullableClass from petstore_api.models.nullable_class import NullableClass

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class AdditionalPropertiesAnyType(BaseModel): class AdditionalPropertiesAnyType(BaseModel):
""" """
@ -49,7 +47,7 @@ class AdditionalPropertiesAnyType(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesAnyType from a JSON string""" """Create an instance of AdditionalPropertiesAnyType from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,11 +62,13 @@ class AdditionalPropertiesAnyType(BaseModel):
are ignored. are ignored.
* Fields in `self.additional_properties` are added to the output dict. * Fields in `self.additional_properties` are added to the output dict.
""" """
excluded_fields: Set[str] = set([
"additional_properties",
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
"additional_properties",
},
exclude_none=True, exclude_none=True,
) )
# puts key-value pairs in additional_properties in the top level # puts key-value pairs in additional_properties in the top level
@ -79,7 +79,7 @@ class AdditionalPropertiesAnyType(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesAnyType from a dict""" """Create an instance of AdditionalPropertiesAnyType from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class AdditionalPropertiesClass(BaseModel): class AdditionalPropertiesClass(BaseModel):
""" """
@ -49,7 +47,7 @@ class AdditionalPropertiesClass(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesClass from a JSON string""" """Create an instance of AdditionalPropertiesClass from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,16 +61,18 @@ class AdditionalPropertiesClass(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesClass from a dict""" """Create an instance of AdditionalPropertiesClass from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class AdditionalPropertiesObject(BaseModel): class AdditionalPropertiesObject(BaseModel):
""" """
@ -49,7 +47,7 @@ class AdditionalPropertiesObject(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesObject from a JSON string""" """Create an instance of AdditionalPropertiesObject from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,11 +62,13 @@ class AdditionalPropertiesObject(BaseModel):
are ignored. are ignored.
* Fields in `self.additional_properties` are added to the output dict. * Fields in `self.additional_properties` are added to the output dict.
""" """
excluded_fields: Set[str] = set([
"additional_properties",
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
"additional_properties",
},
exclude_none=True, exclude_none=True,
) )
# puts key-value pairs in additional_properties in the top level # puts key-value pairs in additional_properties in the top level
@ -79,7 +79,7 @@ class AdditionalPropertiesObject(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesObject from a dict""" """Create an instance of AdditionalPropertiesObject from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class AdditionalPropertiesWithDescriptionOnly(BaseModel): class AdditionalPropertiesWithDescriptionOnly(BaseModel):
""" """
@ -49,7 +47,7 @@ class AdditionalPropertiesWithDescriptionOnly(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesWithDescriptionOnly from a JSON string""" """Create an instance of AdditionalPropertiesWithDescriptionOnly from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,11 +62,13 @@ class AdditionalPropertiesWithDescriptionOnly(BaseModel):
are ignored. are ignored.
* Fields in `self.additional_properties` are added to the output dict. * Fields in `self.additional_properties` are added to the output dict.
""" """
excluded_fields: Set[str] = set([
"additional_properties",
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
"additional_properties",
},
exclude_none=True, exclude_none=True,
) )
# puts key-value pairs in additional_properties in the top level # puts key-value pairs in additional_properties in the top level
@ -79,7 +79,7 @@ class AdditionalPropertiesWithDescriptionOnly(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of AdditionalPropertiesWithDescriptionOnly from a dict""" """Create an instance of AdditionalPropertiesWithDescriptionOnly from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel, Field, StrictStr from pydantic import BaseModel, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from petstore_api.models.single_ref_type import SingleRefType from petstore_api.models.single_ref_type import SingleRefType
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class AllOfWithSingleRef(BaseModel): class AllOfWithSingleRef(BaseModel):
""" """
@ -50,7 +48,7 @@ class AllOfWithSingleRef(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of AllOfWithSingleRef from a JSON string""" """Create an instance of AllOfWithSingleRef from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -64,16 +62,18 @@ class AllOfWithSingleRef(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of AllOfWithSingleRef from a dict""" """Create an instance of AllOfWithSingleRef from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, Field, StrictStr from pydantic import BaseModel, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional, Union from typing import Any, ClassVar, Dict, List, Optional, Union
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Animal(BaseModel): class Animal(BaseModel):
""" """
@ -40,7 +38,7 @@ class Animal(BaseModel):
# JSON field name that stores the object type # JSON field name that stores the object type
__discriminator_property_name: ClassVar[List[str]] = 'className' __discriminator_property_name: ClassVar[str] = 'className'
# discriminator mappings # discriminator mappings
__discriminator_value_class_map: ClassVar[Dict[str, str]] = { __discriminator_value_class_map: ClassVar[Dict[str, str]] = {
@ -48,7 +46,7 @@ class Animal(BaseModel):
} }
@classmethod @classmethod
def get_discriminator_value(cls, obj: Dict) -> str: def get_discriminator_value(cls, obj: Dict) -> Optional[str]:
"""Returns the discriminator value (object type) of the data""" """Returns the discriminator value (object type) of the data"""
discriminator_value = obj[cls.__discriminator_property_name] discriminator_value = obj[cls.__discriminator_property_name]
if discriminator_value: if discriminator_value:
@ -66,7 +64,7 @@ class Animal(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Union[Self, Self]: def from_json(cls, json_str: str) -> Optional[Union[Self, Self]]:
"""Create an instance of Animal from a JSON string""" """Create an instance of Animal from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -80,16 +78,18 @@ class Animal(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Union[Self, Self]: def from_dict(cls, obj: Dict) -> Optional[Union[Self, Self]]:
"""Create an instance of Animal from a dict""" """Create an instance of Animal from a dict"""
# look up the object type based on discriminator mapping # look up the object type based on discriminator mapping
object_type = cls.get_discriminator_value(obj) object_type = cls.get_discriminator_value(obj)

View File

@ -22,6 +22,7 @@ from typing import List, Optional
from typing_extensions import Annotated from typing_extensions import Annotated
from typing import Union, Any, List, TYPE_CHECKING, Optional, Dict from typing import Union, Any, List, TYPE_CHECKING, Optional, Dict
from typing_extensions import Literal, Self from typing_extensions import Literal, Self
from pydantic import Field
ANYOFCOLOR_ANY_OF_SCHEMAS = ["List[int]", "str"] ANYOFCOLOR_ANY_OF_SCHEMAS = ["List[int]", "str"]
@ -40,7 +41,7 @@ class AnyOfColor(BaseModel):
actual_instance: Optional[Union[List[int], str]] = None actual_instance: Optional[Union[List[int], str]] = None
else: else:
actual_instance: Any = None actual_instance: Any = None
any_of_schemas: List[str] = Literal[ANYOFCOLOR_ANY_OF_SCHEMAS] any_of_schemas: List[str] = Field(default=Literal["List[int]", "str"])
model_config = { model_config = {
"validate_assignment": True, "validate_assignment": True,
@ -133,22 +134,20 @@ class AnyOfColor(BaseModel):
if self.actual_instance is None: if self.actual_instance is None:
return "null" return "null"
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
if callable(to_json):
return self.actual_instance.to_json() return self.actual_instance.to_json()
else: else:
return json.dumps(self.actual_instance) return json.dumps(self.actual_instance)
def to_dict(self) -> Dict: def to_dict(self) -> Optional[Union[Dict, List[int], str]]:
"""Returns the dict representation of the actual instance""" """Returns the dict representation of the actual instance"""
if self.actual_instance is None: if self.actual_instance is None:
return "null" return None
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
if callable(to_json):
return self.actual_instance.to_dict() return self.actual_instance.to_dict()
else: else:
return json.dumps(self.actual_instance) return self.actual_instance
def to_str(self) -> str: def to_str(self) -> str:
"""Returns the string representation of the actual instance""" """Returns the string representation of the actual instance"""

View File

@ -23,6 +23,7 @@ from petstore_api.models.basque_pig import BasquePig
from petstore_api.models.danish_pig import DanishPig from petstore_api.models.danish_pig import DanishPig
from typing import Union, Any, List, TYPE_CHECKING, Optional, Dict from typing import Union, Any, List, TYPE_CHECKING, Optional, Dict
from typing_extensions import Literal, Self from typing_extensions import Literal, Self
from pydantic import Field
ANYOFPIG_ANY_OF_SCHEMAS = ["BasquePig", "DanishPig"] ANYOFPIG_ANY_OF_SCHEMAS = ["BasquePig", "DanishPig"]
@ -39,7 +40,7 @@ class AnyOfPig(BaseModel):
actual_instance: Optional[Union[BasquePig, DanishPig]] = None actual_instance: Optional[Union[BasquePig, DanishPig]] = None
else: else:
actual_instance: Any = None actual_instance: Any = None
any_of_schemas: List[str] = Literal[ANYOFPIG_ANY_OF_SCHEMAS] any_of_schemas: List[str] = Field(default=Literal["BasquePig", "DanishPig"])
model_config = { model_config = {
"validate_assignment": True, "validate_assignment": True,
@ -111,22 +112,20 @@ class AnyOfPig(BaseModel):
if self.actual_instance is None: if self.actual_instance is None:
return "null" return "null"
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
if callable(to_json):
return self.actual_instance.to_json() return self.actual_instance.to_json()
else: else:
return json.dumps(self.actual_instance) return json.dumps(self.actual_instance)
def to_dict(self) -> Dict: def to_dict(self) -> Optional[Union[Dict, BasquePig, DanishPig]]:
"""Returns the dict representation of the actual instance""" """Returns the dict representation of the actual instance"""
if self.actual_instance is None: if self.actual_instance is None:
return "null" return None
to_json = getattr(self.actual_instance, "to_json", None) if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
if callable(to_json):
return self.actual_instance.to_dict() return self.actual_instance.to_dict()
else: else:
return json.dumps(self.actual_instance) return self.actual_instance
def to_str(self) -> str: def to_str(self) -> str:
"""Returns the string representation of the actual instance""" """Returns the string representation of the actual instance"""

View File

@ -20,10 +20,8 @@ import json
from pydantic import BaseModel from pydantic import BaseModel
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from petstore_api.models.tag import Tag from petstore_api.models.tag import Tag
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class ArrayOfArrayOfModel(BaseModel): class ArrayOfArrayOfModel(BaseModel):
""" """
@ -49,7 +47,7 @@ class ArrayOfArrayOfModel(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of ArrayOfArrayOfModel from a JSON string""" """Create an instance of ArrayOfArrayOfModel from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,10 +61,12 @@ class ArrayOfArrayOfModel(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of each item in another_property (list of list) # override the default output from pydantic by calling `to_dict()` of each item in another_property (list of list)
@ -81,7 +81,7 @@ class ArrayOfArrayOfModel(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of ArrayOfArrayOfModel from a dict""" """Create an instance of ArrayOfArrayOfModel from a dict"""
if obj is None: if obj is None:
return None return None
@ -92,7 +92,7 @@ class ArrayOfArrayOfModel(BaseModel):
_obj = cls.model_validate({ _obj = cls.model_validate({
"another_property": [ "another_property": [
[Tag.from_dict(_inner_item) for _inner_item in _item] [Tag.from_dict(_inner_item) for _inner_item in _item]
for _item in obj.get("another_property") for _item in obj["another_property"]
] if obj.get("another_property") is not None else None ] if obj.get("another_property") is not None else None
}) })
return _obj return _obj

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class ArrayOfArrayOfNumberOnly(BaseModel): class ArrayOfArrayOfNumberOnly(BaseModel):
""" """
@ -48,7 +46,7 @@ class ArrayOfArrayOfNumberOnly(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of ArrayOfArrayOfNumberOnly from a JSON string""" """Create an instance of ArrayOfArrayOfNumberOnly from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -62,16 +60,18 @@ class ArrayOfArrayOfNumberOnly(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of ArrayOfArrayOfNumberOnly from a dict""" """Create an instance of ArrayOfArrayOfNumberOnly from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class ArrayOfNumberOnly(BaseModel): class ArrayOfNumberOnly(BaseModel):
""" """
@ -48,7 +46,7 @@ class ArrayOfNumberOnly(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of ArrayOfNumberOnly from a JSON string""" """Create an instance of ArrayOfNumberOnly from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -62,16 +60,18 @@ class ArrayOfNumberOnly(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of ArrayOfNumberOnly from a dict""" """Create an instance of ArrayOfNumberOnly from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -21,10 +21,8 @@ from pydantic import BaseModel, Field, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated from typing_extensions import Annotated
from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.read_only_first import ReadOnlyFirst
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class ArrayTest(BaseModel): class ArrayTest(BaseModel):
""" """
@ -52,7 +50,7 @@ class ArrayTest(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of ArrayTest from a JSON string""" """Create an instance of ArrayTest from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -66,10 +64,12 @@ class ArrayTest(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of each item in array_array_of_model (list of list) # override the default output from pydantic by calling `to_dict()` of each item in array_array_of_model (list of list)
@ -84,7 +84,7 @@ class ArrayTest(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of ArrayTest from a dict""" """Create an instance of ArrayTest from a dict"""
if obj is None: if obj is None:
return None return None
@ -97,7 +97,7 @@ class ArrayTest(BaseModel):
"array_array_of_integer": obj.get("array_array_of_integer"), "array_array_of_integer": obj.get("array_array_of_integer"),
"array_array_of_model": [ "array_array_of_model": [
[ReadOnlyFirst.from_dict(_inner_item) for _inner_item in _item] [ReadOnlyFirst.from_dict(_inner_item) for _inner_item in _item]
for _item in obj.get("array_array_of_model") for _item in obj["array_array_of_model"]
] if obj.get("array_array_of_model") is not None else None ] if obj.get("array_array_of_model") is not None else None
}) })
return _obj return _obj

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, Field, StrictStr from pydantic import BaseModel, Field, StrictStr
from typing import Any, ClassVar, Dict, List from typing import Any, ClassVar, Dict, List
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class BasquePig(BaseModel): class BasquePig(BaseModel):
""" """
@ -49,7 +47,7 @@ class BasquePig(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of BasquePig from a JSON string""" """Create an instance of BasquePig from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,16 +61,18 @@ class BasquePig(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of BasquePig from a dict""" """Create an instance of BasquePig from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, Field, StrictStr from pydantic import BaseModel, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Capitalization(BaseModel): class Capitalization(BaseModel):
""" """
@ -53,7 +51,7 @@ class Capitalization(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Capitalization from a JSON string""" """Create an instance of Capitalization from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -67,16 +65,18 @@ class Capitalization(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Capitalization from a dict""" """Create an instance of Capitalization from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -20,10 +20,8 @@ import json
from pydantic import StrictBool from pydantic import StrictBool
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from petstore_api.models.animal import Animal from petstore_api.models.animal import Animal
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Cat(Animal): class Cat(Animal):
""" """
@ -49,7 +47,7 @@ class Cat(Animal):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Cat from a JSON string""" """Create an instance of Cat from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,16 +61,18 @@ class Cat(Animal):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Cat from a dict""" """Create an instance of Cat from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictInt, StrictStr from pydantic import BaseModel, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Category(BaseModel): class Category(BaseModel):
""" """
@ -49,7 +47,7 @@ class Category(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Category from a JSON string""" """Create an instance of Category from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,16 +61,18 @@ class Category(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Category from a dict""" """Create an instance of Category from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictInt from pydantic import BaseModel, StrictInt
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class CircularReferenceModel(BaseModel): class CircularReferenceModel(BaseModel):
""" """
@ -49,7 +47,7 @@ class CircularReferenceModel(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of CircularReferenceModel from a JSON string""" """Create an instance of CircularReferenceModel from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -63,10 +61,12 @@ class CircularReferenceModel(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of nested # override the default output from pydantic by calling `to_dict()` of nested
@ -75,7 +75,7 @@ class CircularReferenceModel(BaseModel):
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of CircularReferenceModel from a dict""" """Create an instance of CircularReferenceModel from a dict"""
if obj is None: if obj is None:
return None return None
@ -85,7 +85,7 @@ class CircularReferenceModel(BaseModel):
_obj = cls.model_validate({ _obj = cls.model_validate({
"size": obj.get("size"), "size": obj.get("size"),
"nested": FirstRef.from_dict(obj.get("nested")) if obj.get("nested") is not None else None "nested": FirstRef.from_dict(obj["nested"]) if obj.get("nested") is not None else None
}) })
return _obj return _obj

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, Field, StrictStr from pydantic import BaseModel, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class ClassModel(BaseModel): class ClassModel(BaseModel):
""" """
@ -48,7 +46,7 @@ class ClassModel(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of ClassModel from a JSON string""" """Create an instance of ClassModel from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -62,16 +60,18 @@ class ClassModel(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of ClassModel from a dict""" """Create an instance of ClassModel from a dict"""
if obj is None: if obj is None:
return None return None

View File

@ -19,10 +19,8 @@ import json
from pydantic import BaseModel, StrictStr from pydantic import BaseModel, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
try: from typing import Optional, Set
from typing import Self from typing_extensions import Self
except ImportError:
from typing_extensions import Self
class Client(BaseModel): class Client(BaseModel):
""" """
@ -48,7 +46,7 @@ class Client(BaseModel):
return json.dumps(self.to_dict()) return json.dumps(self.to_dict())
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Client from a JSON string""" """Create an instance of Client from a JSON string"""
return cls.from_dict(json.loads(json_str)) return cls.from_dict(json.loads(json_str))
@ -62,16 +60,18 @@ class Client(BaseModel):
were set at model initialization. Other fields with value `None` were set at model initialization. Other fields with value `None`
are ignored. are ignored.
""" """
excluded_fields: Set[str] = set([
])
_dict = self.model_dump( _dict = self.model_dump(
by_alias=True, by_alias=True,
exclude={ exclude=excluded_fields,
},
exclude_none=True, exclude_none=True,
) )
return _dict return _dict
@classmethod @classmethod
def from_dict(cls, obj: Dict) -> Self: def from_dict(cls, obj: Optional[Dict]) -> Optional[Self]:
"""Create an instance of Client from a dict""" """Create an instance of Client from a dict"""
if obj is None: if obj is None:
return None return None

Some files were not shown because too many files have changed in this diff Show More