forked from loafle/openapi-generator-original
[Python] fixes __setitem__ throwing an error for composed instance (#10197)
* adding a test for issues 10083 * commiting the generated files * fix for the setattr issue * commit generated files Co-authored-by: Aanisha Mishra <aanisha.mishra05@gmail.com>
This commit is contained in:
@@ -1182,6 +1182,9 @@ def is_valid_type(input_class_simple, valid_classes):
|
|||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
|
if issubclass(input_class_simple, OpenApiModel) and \
|
||||||
|
valid_classes == (bool, date, datetime, dict, float, int, list, str, none_type,):
|
||||||
|
return True
|
||||||
valid_type = input_class_simple in valid_classes
|
valid_type = input_class_simple in valid_classes
|
||||||
if not valid_type and (
|
if not valid_type and (
|
||||||
issubclass(input_class_simple, OpenApiModel) or
|
issubclass(input_class_simple, OpenApiModel) or
|
||||||
|
|||||||
@@ -1643,6 +1643,8 @@ components:
|
|||||||
properties:
|
properties:
|
||||||
breed:
|
breed:
|
||||||
type: string
|
type: string
|
||||||
|
legs:
|
||||||
|
$ref: '#/components/schemas/Legs'
|
||||||
Cat:
|
Cat:
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: '#/components/schemas/Animal'
|
- $ref: '#/components/schemas/Animal'
|
||||||
@@ -1650,6 +1652,19 @@ components:
|
|||||||
properties:
|
properties:
|
||||||
declawed:
|
declawed:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
Legs:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- legs
|
||||||
|
properties:
|
||||||
|
legs:
|
||||||
|
enum:
|
||||||
|
- '2'
|
||||||
|
- '4'
|
||||||
|
default: '4'
|
||||||
|
x-enum-as-string: true
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
Address:
|
Address:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|||||||
@@ -1479,6 +1479,9 @@ def is_valid_type(input_class_simple, valid_classes):
|
|||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
|
if issubclass(input_class_simple, OpenApiModel) and \
|
||||||
|
valid_classes == (bool, date, datetime, dict, float, int, list, str, none_type,):
|
||||||
|
return True
|
||||||
valid_type = input_class_simple in valid_classes
|
valid_type = input_class_simple in valid_classes
|
||||||
if not valid_type and (
|
if not valid_type and (
|
||||||
issubclass(input_class_simple, OpenApiModel) or
|
issubclass(input_class_simple, OpenApiModel) or
|
||||||
|
|||||||
@@ -1479,6 +1479,9 @@ def is_valid_type(input_class_simple, valid_classes):
|
|||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
|
if issubclass(input_class_simple, OpenApiModel) and \
|
||||||
|
valid_classes == (bool, date, datetime, dict, float, int, list, str, none_type,):
|
||||||
|
return True
|
||||||
valid_type = input_class_simple in valid_classes
|
valid_type = input_class_simple in valid_classes
|
||||||
if not valid_type and (
|
if not valid_type and (
|
||||||
issubclass(input_class_simple, OpenApiModel) or
|
issubclass(input_class_simple, OpenApiModel) or
|
||||||
|
|||||||
@@ -1479,6 +1479,9 @@ def is_valid_type(input_class_simple, valid_classes):
|
|||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
|
if issubclass(input_class_simple, OpenApiModel) and \
|
||||||
|
valid_classes == (bool, date, datetime, dict, float, int, list, str, none_type,):
|
||||||
|
return True
|
||||||
valid_type = input_class_simple in valid_classes
|
valid_type = input_class_simple in valid_classes
|
||||||
if not valid_type and (
|
if not valid_type and (
|
||||||
issubclass(input_class_simple, OpenApiModel) or
|
issubclass(input_class_simple, OpenApiModel) or
|
||||||
|
|||||||
@@ -1479,6 +1479,9 @@ def is_valid_type(input_class_simple, valid_classes):
|
|||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
|
if issubclass(input_class_simple, OpenApiModel) and \
|
||||||
|
valid_classes == (bool, date, datetime, dict, float, int, list, str, none_type,):
|
||||||
|
return True
|
||||||
valid_type = input_class_simple in valid_classes
|
valid_type = input_class_simple in valid_classes
|
||||||
if not valid_type and (
|
if not valid_type and (
|
||||||
issubclass(input_class_simple, OpenApiModel) or
|
issubclass(input_class_simple, OpenApiModel) or
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ docs/IntegerEnum.md
|
|||||||
docs/IntegerEnumOneValue.md
|
docs/IntegerEnumOneValue.md
|
||||||
docs/IntegerEnumWithDefaultValue.md
|
docs/IntegerEnumWithDefaultValue.md
|
||||||
docs/IsoscelesTriangle.md
|
docs/IsoscelesTriangle.md
|
||||||
|
docs/Legs.md
|
||||||
docs/List.md
|
docs/List.md
|
||||||
docs/Mammal.md
|
docs/Mammal.md
|
||||||
docs/MapTest.md
|
docs/MapTest.md
|
||||||
@@ -170,6 +171,7 @@ petstore_api/model/integer_enum.py
|
|||||||
petstore_api/model/integer_enum_one_value.py
|
petstore_api/model/integer_enum_one_value.py
|
||||||
petstore_api/model/integer_enum_with_default_value.py
|
petstore_api/model/integer_enum_with_default_value.py
|
||||||
petstore_api/model/isosceles_triangle.py
|
petstore_api/model/isosceles_triangle.py
|
||||||
|
petstore_api/model/legs.py
|
||||||
petstore_api/model/list.py
|
petstore_api/model/list.py
|
||||||
petstore_api/model/mammal.py
|
petstore_api/model/mammal.py
|
||||||
petstore_api/model/map_test.py
|
petstore_api/model/map_test.py
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [IntegerEnumOneValue](docs/IntegerEnumOneValue.md)
|
- [IntegerEnumOneValue](docs/IntegerEnumOneValue.md)
|
||||||
- [IntegerEnumWithDefaultValue](docs/IntegerEnumWithDefaultValue.md)
|
- [IntegerEnumWithDefaultValue](docs/IntegerEnumWithDefaultValue.md)
|
||||||
- [IsoscelesTriangle](docs/IsoscelesTriangle.md)
|
- [IsoscelesTriangle](docs/IsoscelesTriangle.md)
|
||||||
|
- [Legs](docs/Legs.md)
|
||||||
- [List](docs/List.md)
|
- [List](docs/List.md)
|
||||||
- [Mammal](docs/Mammal.md)
|
- [Mammal](docs/Mammal.md)
|
||||||
- [MapTest](docs/MapTest.md)
|
- [MapTest](docs/MapTest.md)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ Name | Type | Description | Notes
|
|||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**class_name** | **str** | |
|
**class_name** | **str** | |
|
||||||
**breed** | **str** | | [optional]
|
**breed** | **str** | | [optional]
|
||||||
|
**legs** | [**Legs**](Legs.md) | | [optional]
|
||||||
**color** | **str** | | [optional] if omitted the server will use the default value of "red"
|
**color** | **str** | | [optional] if omitted the server will use the default value of "red"
|
||||||
**tail** | **bool** | | [optional] [readonly] if omitted the server will use the default value of True
|
**tail** | **bool** | | [optional] [readonly] if omitted the server will use the default value of True
|
||||||
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**breed** | **str** | | [optional]
|
**breed** | **str** | | [optional]
|
||||||
|
**legs** | [**Legs**](Legs.md) | | [optional]
|
||||||
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
||||||
|
|
||||||
[[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)
|
||||||
|
|||||||
13
samples/openapi3/client/petstore/python/docs/Legs.md
Normal file
13
samples/openapi3/client/petstore/python/docs/Legs.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Legs
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**legs** | **str** | | defaults to "4"
|
||||||
|
**name** | **str** | | [optional]
|
||||||
|
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
@@ -32,8 +32,10 @@ from petstore_api.exceptions import ApiAttributeError
|
|||||||
def lazy_import():
|
def lazy_import():
|
||||||
from petstore_api.model.animal import Animal
|
from petstore_api.model.animal import Animal
|
||||||
from petstore_api.model.dog_all_of import DogAllOf
|
from petstore_api.model.dog_all_of import DogAllOf
|
||||||
|
from petstore_api.model.legs import Legs
|
||||||
globals()['Animal'] = Animal
|
globals()['Animal'] = Animal
|
||||||
globals()['DogAllOf'] = DogAllOf
|
globals()['DogAllOf'] = DogAllOf
|
||||||
|
globals()['Legs'] = Legs
|
||||||
|
|
||||||
|
|
||||||
class Dog(ModelComposed):
|
class Dog(ModelComposed):
|
||||||
@@ -91,6 +93,7 @@ class Dog(ModelComposed):
|
|||||||
return {
|
return {
|
||||||
'class_name': (str,), # noqa: E501
|
'class_name': (str,), # noqa: E501
|
||||||
'breed': (str,), # noqa: E501
|
'breed': (str,), # noqa: E501
|
||||||
|
'legs': (Legs,), # noqa: E501
|
||||||
'color': (str,), # noqa: E501
|
'color': (str,), # noqa: E501
|
||||||
'tail': (bool,), # noqa: E501
|
'tail': (bool,), # noqa: E501
|
||||||
}
|
}
|
||||||
@@ -106,6 +109,7 @@ class Dog(ModelComposed):
|
|||||||
attribute_map = {
|
attribute_map = {
|
||||||
'class_name': 'className', # noqa: E501
|
'class_name': 'className', # noqa: E501
|
||||||
'breed': 'breed', # noqa: E501
|
'breed': 'breed', # noqa: E501
|
||||||
|
'legs': 'legs', # noqa: E501
|
||||||
'color': 'color', # noqa: E501
|
'color': 'color', # noqa: E501
|
||||||
'tail': 'tail', # noqa: E501
|
'tail': 'tail', # noqa: E501
|
||||||
}
|
}
|
||||||
@@ -152,6 +156,7 @@ class Dog(ModelComposed):
|
|||||||
through its discriminator because we passed in
|
through its discriminator because we passed in
|
||||||
_visited_composed_classes = (Animal,)
|
_visited_composed_classes = (Animal,)
|
||||||
breed (str): [optional] # noqa: E501
|
breed (str): [optional] # noqa: E501
|
||||||
|
legs (Legs): [optional] # noqa: E501
|
||||||
color (str): [optional] if omitted the server will use the default value of "red" # noqa: E501
|
color (str): [optional] if omitted the server will use the default value of "red" # noqa: E501
|
||||||
tail (bool): [optional] if omitted the server will use the default value of True # noqa: E501
|
tail (bool): [optional] if omitted the server will use the default value of True # noqa: E501
|
||||||
"""
|
"""
|
||||||
@@ -255,6 +260,7 @@ class Dog(ModelComposed):
|
|||||||
through its discriminator because we passed in
|
through its discriminator because we passed in
|
||||||
_visited_composed_classes = (Animal,)
|
_visited_composed_classes = (Animal,)
|
||||||
breed (str): [optional] # noqa: E501
|
breed (str): [optional] # noqa: E501
|
||||||
|
legs (Legs): [optional] # noqa: E501
|
||||||
color (str): [optional] if omitted the server will use the default value of "red" # noqa: E501
|
color (str): [optional] if omitted the server will use the default value of "red" # noqa: E501
|
||||||
tail (bool): [optional] if omitted the server will use the default value of True # noqa: E501
|
tail (bool): [optional] if omitted the server will use the default value of True # noqa: E501
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ from ..model_utils import OpenApiModel
|
|||||||
from petstore_api.exceptions import ApiAttributeError
|
from petstore_api.exceptions import ApiAttributeError
|
||||||
|
|
||||||
|
|
||||||
|
def lazy_import():
|
||||||
|
from petstore_api.model.legs import Legs
|
||||||
|
globals()['Legs'] = Legs
|
||||||
|
|
||||||
|
|
||||||
class DogAllOf(ModelNormal):
|
class DogAllOf(ModelNormal):
|
||||||
"""NOTE: This class is auto generated by OpenAPI Generator.
|
"""NOTE: This class is auto generated by OpenAPI Generator.
|
||||||
@@ -66,6 +70,7 @@ class DogAllOf(ModelNormal):
|
|||||||
This must be a method because a model may have properties that are
|
This must be a method because a model may have properties that are
|
||||||
of type self, this must run after the class is loaded
|
of type self, this must run after the class is loaded
|
||||||
"""
|
"""
|
||||||
|
lazy_import()
|
||||||
return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
|
return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
|
||||||
|
|
||||||
_nullable = False
|
_nullable = False
|
||||||
@@ -80,8 +85,10 @@ class DogAllOf(ModelNormal):
|
|||||||
openapi_types (dict): The key is attribute name
|
openapi_types (dict): The key is attribute name
|
||||||
and the value is attribute type.
|
and the value is attribute type.
|
||||||
"""
|
"""
|
||||||
|
lazy_import()
|
||||||
return {
|
return {
|
||||||
'breed': (str,), # noqa: E501
|
'breed': (str,), # noqa: E501
|
||||||
|
'legs': (Legs,), # noqa: E501
|
||||||
}
|
}
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
@@ -91,6 +98,7 @@ class DogAllOf(ModelNormal):
|
|||||||
|
|
||||||
attribute_map = {
|
attribute_map = {
|
||||||
'breed': 'breed', # noqa: E501
|
'breed': 'breed', # noqa: E501
|
||||||
|
'legs': 'legs', # noqa: E501
|
||||||
}
|
}
|
||||||
|
|
||||||
read_only_vars = {
|
read_only_vars = {
|
||||||
@@ -135,6 +143,7 @@ class DogAllOf(ModelNormal):
|
|||||||
through its discriminator because we passed in
|
through its discriminator because we passed in
|
||||||
_visited_composed_classes = (Animal,)
|
_visited_composed_classes = (Animal,)
|
||||||
breed (str): [optional] # noqa: E501
|
breed (str): [optional] # noqa: E501
|
||||||
|
legs (Legs): [optional] # noqa: E501
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_check_type = kwargs.pop('_check_type', True)
|
_check_type = kwargs.pop('_check_type', True)
|
||||||
@@ -217,6 +226,7 @@ class DogAllOf(ModelNormal):
|
|||||||
through its discriminator because we passed in
|
through its discriminator because we passed in
|
||||||
_visited_composed_classes = (Animal,)
|
_visited_composed_classes = (Animal,)
|
||||||
breed (str): [optional] # noqa: E501
|
breed (str): [optional] # noqa: E501
|
||||||
|
legs (Legs): [optional] # noqa: E501
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_check_type = kwargs.pop('_check_type', True)
|
_check_type = kwargs.pop('_check_type', True)
|
||||||
|
|||||||
@@ -0,0 +1,271 @@
|
|||||||
|
"""
|
||||||
|
OpenAPI Petstore
|
||||||
|
|
||||||
|
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 1.0.0
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import re # noqa: F401
|
||||||
|
import sys # noqa: F401
|
||||||
|
|
||||||
|
from petstore_api.model_utils import ( # noqa: F401
|
||||||
|
ApiTypeError,
|
||||||
|
ModelComposed,
|
||||||
|
ModelNormal,
|
||||||
|
ModelSimple,
|
||||||
|
cached_property,
|
||||||
|
change_keys_js_to_python,
|
||||||
|
convert_js_args_to_python_args,
|
||||||
|
date,
|
||||||
|
datetime,
|
||||||
|
file_type,
|
||||||
|
none_type,
|
||||||
|
validate_get_composed_info,
|
||||||
|
)
|
||||||
|
from ..model_utils import OpenApiModel
|
||||||
|
from petstore_api.exceptions import ApiAttributeError
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Legs(ModelNormal):
|
||||||
|
"""NOTE: This class is auto generated by OpenAPI Generator.
|
||||||
|
Ref: https://openapi-generator.tech
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
allowed_values (dict): The key is the tuple path to the attribute
|
||||||
|
and the for var_name this is (var_name,). The value is a dict
|
||||||
|
with a capitalized key describing the allowed value and an allowed
|
||||||
|
value. These dicts store the allowed enum values.
|
||||||
|
attribute_map (dict): The key is attribute name
|
||||||
|
and the value is json key in definition.
|
||||||
|
discriminator_value_class_map (dict): A dict to go from the discriminator
|
||||||
|
variable value to the discriminator class name.
|
||||||
|
validations (dict): The key is the tuple path to the attribute
|
||||||
|
and the for var_name this is (var_name,). The value is a dict
|
||||||
|
that stores validations for max_length, min_length, max_items,
|
||||||
|
min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
|
||||||
|
inclusive_minimum, and regex.
|
||||||
|
additional_properties_type (tuple): A tuple of classes accepted
|
||||||
|
as additional properties values.
|
||||||
|
"""
|
||||||
|
|
||||||
|
allowed_values = {
|
||||||
|
('legs',): {
|
||||||
|
'2': "2",
|
||||||
|
'4': "4",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
validations = {
|
||||||
|
}
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def additional_properties_type():
|
||||||
|
"""
|
||||||
|
This must be a method because a model may have properties that are
|
||||||
|
of type self, this must run after the class is loaded
|
||||||
|
"""
|
||||||
|
return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
|
||||||
|
|
||||||
|
_nullable = False
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def openapi_types():
|
||||||
|
"""
|
||||||
|
This must be a method because a model may have properties that are
|
||||||
|
of type self, this must run after the class is loaded
|
||||||
|
|
||||||
|
Returns
|
||||||
|
openapi_types (dict): The key is attribute name
|
||||||
|
and the value is attribute type.
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
'legs': (str,), # noqa: E501
|
||||||
|
'name': (str,), # noqa: E501
|
||||||
|
}
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def discriminator():
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
attribute_map = {
|
||||||
|
'legs': 'legs', # noqa: E501
|
||||||
|
'name': 'name', # noqa: E501
|
||||||
|
}
|
||||||
|
|
||||||
|
read_only_vars = {
|
||||||
|
}
|
||||||
|
|
||||||
|
_composed_schemas = {}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@convert_js_args_to_python_args
|
||||||
|
def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
|
||||||
|
"""Legs - a model defined in OpenAPI
|
||||||
|
|
||||||
|
Args:
|
||||||
|
|
||||||
|
Keyword Args:
|
||||||
|
legs (str): defaults to "4", must be one of ["2", "4", ] # noqa: E501
|
||||||
|
_check_type (bool): if True, values for parameters in openapi_types
|
||||||
|
will be type checked and a TypeError will be
|
||||||
|
raised if the wrong type is input.
|
||||||
|
Defaults to True
|
||||||
|
_path_to_item (tuple/list): This is a list of keys or values to
|
||||||
|
drill down to the model in received_data
|
||||||
|
when deserializing a response
|
||||||
|
_spec_property_naming (bool): True if the variable names in the input data
|
||||||
|
are serialized names, as specified in the OpenAPI document.
|
||||||
|
False if the variable names in the input data
|
||||||
|
are pythonic names, e.g. snake case (default)
|
||||||
|
_configuration (Configuration): the instance to use when
|
||||||
|
deserializing a file_type parameter.
|
||||||
|
If passed, type conversion is attempted
|
||||||
|
If omitted no type conversion is done.
|
||||||
|
_visited_composed_classes (tuple): This stores a tuple of
|
||||||
|
classes that we have traveled through so that
|
||||||
|
if we see that class again we will not use its
|
||||||
|
discriminator again.
|
||||||
|
When traveling through a discriminator, the
|
||||||
|
composed schema that is
|
||||||
|
is traveled through is added to this set.
|
||||||
|
For example if Animal has a discriminator
|
||||||
|
petType and we pass in "Dog", and the class Dog
|
||||||
|
allOf includes Animal, we move through Animal
|
||||||
|
once using the discriminator, and pick Dog.
|
||||||
|
Then in Dog, we will make an instance of the
|
||||||
|
Animal class but this time we won't travel
|
||||||
|
through its discriminator because we passed in
|
||||||
|
_visited_composed_classes = (Animal,)
|
||||||
|
name (str): [optional] # noqa: E501
|
||||||
|
"""
|
||||||
|
|
||||||
|
legs = kwargs.get('legs', "4")
|
||||||
|
_check_type = kwargs.pop('_check_type', True)
|
||||||
|
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
|
||||||
|
_path_to_item = kwargs.pop('_path_to_item', ())
|
||||||
|
_configuration = kwargs.pop('_configuration', None)
|
||||||
|
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
|
||||||
|
|
||||||
|
self = super(OpenApiModel, cls).__new__(cls)
|
||||||
|
|
||||||
|
if args:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
|
||||||
|
args,
|
||||||
|
self.__class__.__name__,
|
||||||
|
),
|
||||||
|
path_to_item=_path_to_item,
|
||||||
|
valid_classes=(self.__class__,),
|
||||||
|
)
|
||||||
|
|
||||||
|
self._data_store = {}
|
||||||
|
self._check_type = _check_type
|
||||||
|
self._spec_property_naming = _spec_property_naming
|
||||||
|
self._path_to_item = _path_to_item
|
||||||
|
self._configuration = _configuration
|
||||||
|
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
|
||||||
|
|
||||||
|
self.legs = legs
|
||||||
|
for var_name, var_value in kwargs.items():
|
||||||
|
if var_name not in self.attribute_map and \
|
||||||
|
self._configuration is not None and \
|
||||||
|
self._configuration.discard_unknown_keys and \
|
||||||
|
self.additional_properties_type is None:
|
||||||
|
# discard variable.
|
||||||
|
continue
|
||||||
|
setattr(self, var_name, var_value)
|
||||||
|
return self
|
||||||
|
|
||||||
|
required_properties = set([
|
||||||
|
'_data_store',
|
||||||
|
'_check_type',
|
||||||
|
'_spec_property_naming',
|
||||||
|
'_path_to_item',
|
||||||
|
'_configuration',
|
||||||
|
'_visited_composed_classes',
|
||||||
|
])
|
||||||
|
|
||||||
|
@convert_js_args_to_python_args
|
||||||
|
def __init__(self, *args, **kwargs): # noqa: E501
|
||||||
|
"""Legs - a model defined in OpenAPI
|
||||||
|
|
||||||
|
Args:
|
||||||
|
|
||||||
|
Keyword Args:
|
||||||
|
legs (str): defaults to "4", must be one of ["2", "4", ] # noqa: E501
|
||||||
|
_check_type (bool): if True, values for parameters in openapi_types
|
||||||
|
will be type checked and a TypeError will be
|
||||||
|
raised if the wrong type is input.
|
||||||
|
Defaults to True
|
||||||
|
_path_to_item (tuple/list): This is a list of keys or values to
|
||||||
|
drill down to the model in received_data
|
||||||
|
when deserializing a response
|
||||||
|
_spec_property_naming (bool): True if the variable names in the input data
|
||||||
|
are serialized names, as specified in the OpenAPI document.
|
||||||
|
False if the variable names in the input data
|
||||||
|
are pythonic names, e.g. snake case (default)
|
||||||
|
_configuration (Configuration): the instance to use when
|
||||||
|
deserializing a file_type parameter.
|
||||||
|
If passed, type conversion is attempted
|
||||||
|
If omitted no type conversion is done.
|
||||||
|
_visited_composed_classes (tuple): This stores a tuple of
|
||||||
|
classes that we have traveled through so that
|
||||||
|
if we see that class again we will not use its
|
||||||
|
discriminator again.
|
||||||
|
When traveling through a discriminator, the
|
||||||
|
composed schema that is
|
||||||
|
is traveled through is added to this set.
|
||||||
|
For example if Animal has a discriminator
|
||||||
|
petType and we pass in "Dog", and the class Dog
|
||||||
|
allOf includes Animal, we move through Animal
|
||||||
|
once using the discriminator, and pick Dog.
|
||||||
|
Then in Dog, we will make an instance of the
|
||||||
|
Animal class but this time we won't travel
|
||||||
|
through its discriminator because we passed in
|
||||||
|
_visited_composed_classes = (Animal,)
|
||||||
|
name (str): [optional] # noqa: E501
|
||||||
|
"""
|
||||||
|
|
||||||
|
legs = kwargs.get('legs', "4")
|
||||||
|
_check_type = kwargs.pop('_check_type', True)
|
||||||
|
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
|
||||||
|
_path_to_item = kwargs.pop('_path_to_item', ())
|
||||||
|
_configuration = kwargs.pop('_configuration', None)
|
||||||
|
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
|
||||||
|
|
||||||
|
if args:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
|
||||||
|
args,
|
||||||
|
self.__class__.__name__,
|
||||||
|
),
|
||||||
|
path_to_item=_path_to_item,
|
||||||
|
valid_classes=(self.__class__,),
|
||||||
|
)
|
||||||
|
|
||||||
|
self._data_store = {}
|
||||||
|
self._check_type = _check_type
|
||||||
|
self._spec_property_naming = _spec_property_naming
|
||||||
|
self._path_to_item = _path_to_item
|
||||||
|
self._configuration = _configuration
|
||||||
|
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
|
||||||
|
|
||||||
|
self.legs = legs
|
||||||
|
for var_name, var_value in kwargs.items():
|
||||||
|
if var_name not in self.attribute_map and \
|
||||||
|
self._configuration is not None and \
|
||||||
|
self._configuration.discard_unknown_keys and \
|
||||||
|
self.additional_properties_type is None:
|
||||||
|
# discard variable.
|
||||||
|
continue
|
||||||
|
setattr(self, var_name, var_value)
|
||||||
|
if var_name in self.read_only_vars:
|
||||||
|
raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
|
||||||
|
f"class with read only attributes.")
|
||||||
@@ -1479,6 +1479,9 @@ def is_valid_type(input_class_simple, valid_classes):
|
|||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
|
if issubclass(input_class_simple, OpenApiModel) and \
|
||||||
|
valid_classes == (bool, date, datetime, dict, float, int, list, str, none_type,):
|
||||||
|
return True
|
||||||
valid_type = input_class_simple in valid_classes
|
valid_type = input_class_simple in valid_classes
|
||||||
if not valid_type and (
|
if not valid_type and (
|
||||||
issubclass(input_class_simple, OpenApiModel) or
|
issubclass(input_class_simple, OpenApiModel) or
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ from petstore_api.model.integer_enum import IntegerEnum
|
|||||||
from petstore_api.model.integer_enum_one_value import IntegerEnumOneValue
|
from petstore_api.model.integer_enum_one_value import IntegerEnumOneValue
|
||||||
from petstore_api.model.integer_enum_with_default_value import IntegerEnumWithDefaultValue
|
from petstore_api.model.integer_enum_with_default_value import IntegerEnumWithDefaultValue
|
||||||
from petstore_api.model.isosceles_triangle import IsoscelesTriangle
|
from petstore_api.model.isosceles_triangle import IsoscelesTriangle
|
||||||
|
from petstore_api.model.legs import Legs
|
||||||
from petstore_api.model.list import List
|
from petstore_api.model.list import List
|
||||||
from petstore_api.model.mammal import Mammal
|
from petstore_api.model.mammal import Mammal
|
||||||
from petstore_api.model.map_test import MapTest
|
from petstore_api.model.map_test import MapTest
|
||||||
|
|||||||
35
samples/openapi3/client/petstore/python/test/test_legs.py
Normal file
35
samples/openapi3/client/petstore/python/test/test_legs.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
"""
|
||||||
|
OpenAPI Petstore
|
||||||
|
|
||||||
|
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 1.0.0
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import petstore_api
|
||||||
|
from petstore_api.model.legs import Legs
|
||||||
|
|
||||||
|
|
||||||
|
class TestLegs(unittest.TestCase):
|
||||||
|
"""Legs unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def testLegs(self):
|
||||||
|
"""Test Legs"""
|
||||||
|
# FIXME: construct object with mandatory attributes with example values
|
||||||
|
# model = Legs() # noqa: E501
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
41
samples/openapi3/client/petstore/python/tests_manual/test_issue10083.py
Executable file
41
samples/openapi3/client/petstore/python/tests_manual/test_issue10083.py
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
OpenAPI Petstore
|
||||||
|
|
||||||
|
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 1.0.0
|
||||||
|
Generated by: https://openapi-generator.tech
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import petstore_api
|
||||||
|
from petstore_api.model.dog import Dog
|
||||||
|
from petstore_api.model.legs import Legs
|
||||||
|
|
||||||
|
|
||||||
|
class TestSetAttrForComposedSchema(unittest.TestCase):
|
||||||
|
"""TestSetAttrForComposedSchema unit test"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def testSetAttrForComposedSchema(self):
|
||||||
|
"""Test SetAttrForComposedSchema"""
|
||||||
|
try:
|
||||||
|
dog_instance = Dog(class_name="Dog", color="Black")
|
||||||
|
dog_instance.breed = "bulldog"
|
||||||
|
dog_instance.legs = Legs(legs="4")
|
||||||
|
except petstore_api.exceptions.ApiTypeError:
|
||||||
|
self.assertTrue(False)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
Reference in New Issue
Block a user