forked from loafle/openapi-generator-original
The linting results for the generated samples are as follows where the first number is the BEFORE and the second is AFTER. pyclient 7714 vs. 120 pyclient3 7717 vs. 120 pyclient3-asyncio 7584 vs. 120 pyclient-tornado 7633 vs. 120 pyclient3-tornado 7633 vs. 120 For the complete details please see the following gist. https://gist.github.com/kenjones-cisco/2eb69a7e8db75e9fd53789f01570d9f2 Enforces linting for python clients by running flake8 for the generated python client.
220 lines
7.9 KiB
Plaintext
220 lines
7.9 KiB
Plaintext
# coding: utf-8
|
|
|
|
{{>partial_header}}
|
|
|
|
import pprint
|
|
import re # noqa: F401
|
|
|
|
import six
|
|
{{#imports}}{{#-first}}
|
|
{{/-first}}
|
|
{{import}} # noqa: F401,E501
|
|
{{/imports}}
|
|
|
|
|
|
{{#models}}
|
|
{{#model}}
|
|
class {{classname}}(object):
|
|
"""NOTE: This class is auto generated by the swagger code generator program.
|
|
|
|
Do not edit the class manually.
|
|
"""{{#allowableValues}}
|
|
|
|
"""
|
|
allowed enum values
|
|
"""
|
|
{{#enumVars}}
|
|
{{name}} = {{{value}}}{{^-last}}
|
|
{{/-last}}
|
|
{{/enumVars}}{{/allowableValues}}
|
|
|
|
"""
|
|
Attributes:
|
|
swagger_types (dict): The key is attribute name
|
|
and the value is attribute type.
|
|
attribute_map (dict): The key is attribute name
|
|
and the value is json key in definition.
|
|
"""
|
|
swagger_types = {
|
|
{{#vars}}
|
|
'{{name}}': '{{{datatype}}}'{{#hasMore}},{{/hasMore}}
|
|
{{/vars}}
|
|
}
|
|
|
|
attribute_map = {
|
|
{{#vars}}
|
|
'{{name}}': '{{baseName}}'{{#hasMore}},{{/hasMore}}
|
|
{{/vars}}
|
|
}
|
|
{{#discriminator}}
|
|
|
|
discriminator_value_class_map = {
|
|
{{#children}}'{{^vendorExtensions.x-discriminator-value}}{{name}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}': '{{{classname}}}'{{^-last}},
|
|
{{/-last}}{{/children}}
|
|
}
|
|
{{/discriminator}}
|
|
|
|
def __init__(self{{#vars}}, {{name}}={{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}None{{/defaultValue}}{{/vars}}): # noqa: E501
|
|
"""{{classname}} - a model defined in Swagger""" # noqa: E501
|
|
{{#vars}}{{#-first}}
|
|
{{/-first}}
|
|
self._{{name}} = None
|
|
{{/vars}}
|
|
self.discriminator = {{#discriminator}}'{{discriminator}}'{{/discriminator}}{{^discriminator}}None{{/discriminator}}
|
|
{{#vars}}{{#-first}}
|
|
{{/-first}}
|
|
{{#required}}
|
|
self.{{name}} = {{name}}
|
|
{{/required}}
|
|
{{^required}}
|
|
if {{name}} is not None:
|
|
self.{{name}} = {{name}}
|
|
{{/required}}
|
|
{{/vars}}
|
|
|
|
{{#vars}}
|
|
@property
|
|
def {{name}}(self):
|
|
"""Gets the {{name}} of this {{classname}}. # noqa: E501
|
|
|
|
{{#description}}
|
|
{{{description}}} # noqa: E501
|
|
{{/description}}
|
|
|
|
:return: The {{name}} of this {{classname}}. # noqa: E501
|
|
:rtype: {{datatype}}
|
|
"""
|
|
return self._{{name}}
|
|
|
|
@{{name}}.setter
|
|
def {{name}}(self, {{name}}):
|
|
"""Sets the {{name}} of this {{classname}}.
|
|
|
|
{{#description}}
|
|
{{{description}}} # noqa: E501
|
|
{{/description}}
|
|
|
|
:param {{name}}: The {{name}} of this {{classname}}. # noqa: E501
|
|
:type: {{datatype}}
|
|
"""
|
|
{{#required}}
|
|
if {{name}} is None:
|
|
raise ValueError("Invalid value for `{{name}}`, must not be `None`") # noqa: E501
|
|
{{/required}}
|
|
{{#isEnum}}
|
|
{{#isContainer}}
|
|
allowed_values = [{{#allowableValues}}{{#values}}{{#items.isString}}"{{/items.isString}}{{{this}}}{{#items.isString}}"{{/items.isString}}{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}] # noqa: E501
|
|
{{#isListContainer}}
|
|
if not set({{{name}}}).issubset(set(allowed_values)):
|
|
raise ValueError(
|
|
"Invalid values for `{{{name}}}` [{0}], must be a subset of [{1}]" # noqa: E501
|
|
.format(", ".join(map(str, set({{{name}}}) - set(allowed_values))), # noqa: E501
|
|
", ".join(map(str, allowed_values)))
|
|
)
|
|
{{/isListContainer}}
|
|
{{#isMapContainer}}
|
|
if not set({{{name}}}.keys()).issubset(set(allowed_values)):
|
|
raise ValueError(
|
|
"Invalid keys in `{{{name}}}` [{0}], must be a subset of [{1}]" # noqa: E501
|
|
.format(", ".join(map(str, set({{{name}}}.keys()) - set(allowed_values))), # noqa: E501
|
|
", ".join(map(str, allowed_values)))
|
|
)
|
|
{{/isMapContainer}}
|
|
{{/isContainer}}
|
|
{{^isContainer}}
|
|
allowed_values = [{{#allowableValues}}{{#values}}{{#isString}}"{{/isString}}{{{this}}}{{#isString}}"{{/isString}}{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}] # noqa: E501
|
|
if {{{name}}} not in allowed_values:
|
|
raise ValueError(
|
|
"Invalid value for `{{{name}}}` ({0}), must be one of {1}" # noqa: E501
|
|
.format({{{name}}}, allowed_values)
|
|
)
|
|
{{/isContainer}}
|
|
{{/isEnum}}
|
|
{{^isEnum}}
|
|
{{#hasValidation}}
|
|
{{#maxLength}}
|
|
if {{name}} is not None and len({{name}}) > {{maxLength}}:
|
|
raise ValueError("Invalid value for `{{name}}`, length must be less than or equal to `{{maxLength}}`") # noqa: E501
|
|
{{/maxLength}}
|
|
{{#minLength}}
|
|
if {{name}} is not None and len({{name}}) < {{minLength}}:
|
|
raise ValueError("Invalid value for `{{name}}`, length must be greater than or equal to `{{minLength}}`") # noqa: E501
|
|
{{/minLength}}
|
|
{{#maximum}}
|
|
if {{name}} is not None and {{name}} >{{#exclusiveMaximum}}={{/exclusiveMaximum}} {{maximum}}: # noqa: E501
|
|
raise ValueError("Invalid value for `{{name}}`, must be a value less than {{^exclusiveMaximum}}or equal to {{/exclusiveMaximum}}`{{maximum}}`") # noqa: E501
|
|
{{/maximum}}
|
|
{{#minimum}}
|
|
if {{name}} is not None and {{name}} <{{#exclusiveMinimum}}={{/exclusiveMinimum}} {{minimum}}: # noqa: E501
|
|
raise ValueError("Invalid value for `{{name}}`, must be a value greater than {{^exclusiveMinimum}}or equal to {{/exclusiveMinimum}}`{{minimum}}`") # noqa: E501
|
|
{{/minimum}}
|
|
{{#pattern}}
|
|
if {{name}} is not None and not re.search('{{{vendorExtensions.x-regex}}}', {{name}}{{#vendorExtensions.x-modifiers}}{{#-first}}, flags={{/-first}}re.{{.}}{{^-last}} | {{/-last}}{{/vendorExtensions.x-modifiers}}): # noqa: E501
|
|
raise ValueError("Invalid value for `{{name}}`, must be a follow pattern or equal to `{{{pattern}}}`") # noqa: E501
|
|
{{/pattern}}
|
|
{{#maxItems}}
|
|
if {{name}} is not None and len({{name}}) > {{maxItems}}:
|
|
raise ValueError("Invalid value for `{{name}}`, number of items must be less than or equal to `{{maxItems}}`") # noqa: E501
|
|
{{/maxItems}}
|
|
{{#minItems}}
|
|
if {{name}} is not None and len({{name}}) < {{minItems}}:
|
|
raise ValueError("Invalid value for `{{name}}`, number of items must be greater than or equal to `{{minItems}}`") # noqa: E501
|
|
{{/minItems}}
|
|
{{/hasValidation}}
|
|
{{/isEnum}}
|
|
|
|
self._{{name}} = {{name}}
|
|
|
|
{{/vars}}
|
|
{{#discriminator}}
|
|
def get_real_child_model(self, data):
|
|
"""Returns the real base class specified by the discriminator"""
|
|
discriminator_value = data[self.discriminator].lower()
|
|
return self.discriminator_value_class_map.get(discriminator_value)
|
|
|
|
{{/discriminator}}
|
|
def to_dict(self):
|
|
"""Returns the model properties as a dict"""
|
|
result = {}
|
|
|
|
for attr, _ in six.iteritems(self.swagger_types):
|
|
value = getattr(self, attr)
|
|
if isinstance(value, list):
|
|
result[attr] = list(map(
|
|
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
|
|
value
|
|
))
|
|
elif hasattr(value, "to_dict"):
|
|
result[attr] = value.to_dict()
|
|
elif isinstance(value, dict):
|
|
result[attr] = dict(map(
|
|
lambda item: (item[0], item[1].to_dict())
|
|
if hasattr(item[1], "to_dict") else item,
|
|
value.items()
|
|
))
|
|
else:
|
|
result[attr] = value
|
|
|
|
return result
|
|
|
|
def to_str(self):
|
|
"""Returns the string representation of the model"""
|
|
return pprint.pformat(self.to_dict())
|
|
|
|
def __repr__(self):
|
|
"""For `print` and `pprint`"""
|
|
return self.to_str()
|
|
|
|
def __eq__(self, other):
|
|
"""Returns true if both objects are equal"""
|
|
if not isinstance(other, {{classname}}):
|
|
return False
|
|
|
|
return self.__dict__ == other.__dict__
|
|
|
|
def __ne__(self, other):
|
|
"""Returns true if both objects are not equal"""
|
|
return not self == other
|
|
{{/model}}
|
|
{{/models}}
|